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

25ArcGIS Server For ADF开发系列2           
26ArcGIS Server For ADF开发系列2        }

27 ArcGIS Server For ADF开发系列2

 

下面的基本步骤如下:

1、查找页面控件


   
     
1 ArcGIS Server For ADF开发系列2 FloatingPanel fp  =  KMMap.Page.FindControl( " FloatingPanel1 " as  FloatingPanel;           
2 ArcGIS Server For ADF开发系列2            Label labeltxt  =  fp.FindControl( " Label2 " as  Label;
3 ArcGIS Server For ADF开发系列2            labeltxt.Text  =   " 本次查询总数为: "   +  recordcount.ToString()  +   " 条记录 " ;
4 ArcGIS Server For ADF开发系列2
5 ArcGIS Server For ADF开发系列2            DataList gl  =  fp.FindControl( " DataList1 " as  DataList;
6 ArcGIS Server For ADF开发系列2            gl.DataSource  =  ds.Tables[ 0 ];
7 ArcGIS Server For ADF开发系列2            gl.DataBind();
8 ArcGIS Server For ADF开发系列2

2、构建回调内容

 

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

11 ArcGIS Server For ADF开发系列2

 

3、回调页面


   
     
1 ArcGIS Server For ADF开发系列2   CallbackResult cr  =   new  CallbackResult( " div " " searchDiv " " innercontent " , returnstring);
2 ArcGIS Server For ADF开发系列2            KMMap.CallbackResults.Add(cr);
3 ArcGIS Server For ADF开发系列2       ScriptManager1.RegisterDataItem(Page, KMMap.CallbackResults.ToString(),  false );
4 ArcGIS Server For ADF开发系列2

客户端

 
效果如下:

clip_image004

你可能感兴趣的:(server)