ArcGIS Server For ADF開發系列2


真的為如今學習ArcGIS Server的慶幸,有這么多的選擇,ADF,Flex,javaScript,而且目前從論壇來看,各方面的資料也日益多了起來,但就我個人來說,其實學習ADF也是一個不錯的選擇,因為ADF在面對大型的系統時,還是綽綽可行,至於RIA方面,當然是目前的主流,但同時,你也得學習一門新的語言。

總的來說,不管是ADF,還是Flex,都不重要,重要的是你的學習目的和態度了。

廢話少說,先開講。

首先講的最基本的功能,查詢,當然也離不開Ajax,由於相對較而言,目前的ArcGIS Server 9.3的Ajax功能已經非常強大,網上的示例也非常多,比如:http://www.xiaoneng.czm.cn/?p=58#more-58 所以我也不多說,直接貼代碼。先來看客戶端的界面,

clip_image002

Ajax搜索相對而言,其實非常簡單,其一般的代碼模式基本如下:

前提,把下面這段放在頁面代碼中

 

 1    protected   void  Page_PreRender( object  sender, System.EventArgs eventArgs)
 2          {
 3            string scriptKeyCustom = "customDataItemScript";
 4            if (!this.Page.ClientScript.IsClientScriptBlockRegistered(GetType(), scriptKeyCustom) &&
 5            !ScriptManager1.IsInAsyncPostBack)
 6            {               
 7                string scriptBlock = @"
 8                
 9                function onLoadFunction(){{
10                  Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(AsyncResponseHandler);
11                }}
12
13                function AsyncResponseHandler(sender, args) {{
14                  var dataItems = args.get_dataItems();
15                  if (dataItems['{0}'] != null)
16                    ESRI.ADF.System.processCallbackResult(dataItems['{0}']);
17                }}
18
19                Sys.Application.add_init(onLoadFunction);";
20
21                // Insert the client ID of the page into the script block.  
22                scriptBlock = string.Format(scriptBlock, Page.ClientID);               
23                this.Page.ClientScript.RegisterStartupScript(GetType(), scriptKeyCustom, scriptBlock, true);
24            }

25           
26        }

27

 

下面的基本步驟如下:

1、查找頁面控件


   
   
   
1 FloatingPanel fp  =  KMMap.Page.FindControl( " FloatingPanel1 " as  FloatingPanel;           
2             Label labeltxt  =  fp.FindControl( " Label2 " as  Label;
3             labeltxt.Text  =   " 本次查詢總數為: "   +  recordcount.ToString()  +   " 條記錄 " ;
4
5             DataList gl  =  fp.FindControl( " DataList1 " as  DataList;
6             gl.DataSource  =  ds.Tables[ 0 ];
7             gl.DataBind();
8

2、構建回調內容

 

 1    string  returnstring  =   null ;
 2              using  (System.IO.StringWriter sw  =   new  System.IO.StringWriter())
 3              {
 4                HtmlTextWriter htw = new HtmlTextWriter(sw);
 5                labeltxt.RenderControl(htw);
 6                gl.RenderControl(htw);
 7                AspNetPager1.RenderControl(htw);
 8                htw.Flush();
 9                returnstring = sw.ToString();
10            }

11

 

3、回調頁面


   
   
   
1   CallbackResult cr  =   new  CallbackResult( " div " " searchDiv " " innercontent " , returnstring);
2             KMMap.CallbackResults.Add(cr);
3        ScriptManager1.RegisterDataItem(Page, KMMap.CallbackResults.ToString(),  false );
4

客戶端

 
效果如下:

clip_image004


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com