讓ADF的FloatingPanel永遠呈現於最上層(always on Top)

相信Silverlight和FLEX開發者都清楚版面配置與一版的ASP迥然不同,也因此擁有豐富多元、以前在Web系統想都不敢想的貼心UI出現,像是控制項配置有點類似GIS中layer的分層概念,各控制項能出現於同一場景,視覺上可層層交疊、操作上還可互動。

因某些因素無法採用最新SL技術執行當前專案,依然採ESRI已announce不再出新版的ADF,但ADF排版醜到我這毫無審美觀的工程師都看不下去T︿T  這幾天突發奇想,如果人力不夠,無法真正使用RIA技術,那要如何改善排版,讓ADF可以偽裝成SL那種簡潔美麗又好用的介面?!

第一個想作的是,把Map撐至網頁最大範圍,所有功能都置於FloatingPanel內,不用時可拖曳、收合,隨使用者喜好任意擺放。

本來是用DIV來撐開網頁,透過設定DIV與Map之Width&Height等於100%,讓網頁被整張地圖撐滿,但是FloatingPanel反而會因DIV全滿的配置方式,被擠出Browser的可見範圍之外,造成無法操作的窘境。幾經思考,認為由DIV發展的方向可能有誤,一旦有DIV就表示版面被切割,會難以達到「撐滿版面」的預期效果!
解決辦法是針對ADF控制項的CssClass下手即可(請特別注意z-index):

< body>
    < form id="form1" runat="server">
        < esri:MapResourceManager ID="MapResourceManager1" runat="server"   略...>
        < /esri:MapResourceManager>
        < esri:Map ID="Map1" runat="server" Height="100%" MapResourceManager="MapResourceManager1" Width="100%" CssClass="m1" >< /esri:Map>
        < esri:FloatingPanel CssClass="m2" ID="FloatingPanel1" runat="server"  略...>
            < esri:Toc ID="Toc1" runat='server' Height='300px' Width='220px' BuddyControl="Map1" />
        < /esri:FloatingPanel>
    < /form >
< / body>

其中m1與m2設定於head中:
< head runat="server">
    < style type="text/css">
    .m1
    {
        position:absolute;
        top:0px;
        left:0px;
        z-index:0;
    }
    .m2
    {
        position:absolute;
        top:0px;
        left:0px;
        z-index:1;
     }
     < /style>
< /head>

Map撐滿整個網頁
且FloatingPanel always on Top


沒有留言: