在項目開發時,總感覺用adf的toolbar或task功能比較麻煩,缺乏靈活性,所以懂得ArcGISServer內建的Js庫對於 ArcGISServer開發有很大的益處。如建立一個task後我們可以不顯示task頁面,但是我們卻可以“盜用”該task功能,使用 JavaScript來使用該功能。
貼代碼:
Code
1function CX()
2{
3executeTask('searchText=' + document.getElementById('info').value,"WebForm_DoCallback('TaskManager1$SearchAttributesTask1',argument,processCallbackResult,context,postBackError,true)");
4}
以上就是“盜用”SearchAttributesTask的功能,可是實現自己定義頁面形式。“searchText”後面加上需要查詢的資訊的就ok,這樣就實現了自訂形式查詢。
除上面形式“盜用”外,我們還可以借用Asp.Net內建的Ajax來實現無重新整理操作。比如我們要實現某個地物的置中顯示,我們先將地圖頁面實現Asp.Net 自己Ajax的ICallbackEventHandler介面,並實現介面事件中 void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument),將地物置中的代碼寫這裡面,然後返回Map1.CallbackResults.ToString()這個字串。我們盜用的就是這個了,這個返回的是esri js庫processCallbackResult自己能處理的格式字串,解析這個字串即可實現地圖的無重新整理操作(該字串包括^^^ ::等格式含義可以參考說明說明)。通過Asp.Net ICallbackEventHandler返回該字串我們還不能實現重新整理,需要註冊對應的js調用塊。
Code
1public string centeratCallBackFunctionInvocation;
2 protected void Page_Load(object sender, EventArgs e)
3 {
4 centeratCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this,
5 "message", "processCallbackResult", "context", "postBackError", true);
6}
還有在頁面js中調用並傳入參數:
Code
1function Center2()
2 {
3 var wgid=document.getElementById("wgid").value;
4 var message;
5 if(wgid)
6 {
7 message="WGID="+wgid;
8 <%=centeratCallBackFunctionInvocation%>
9
10 }
11
12 }
這樣我們就可以靈活地實現Ajax無重新整理等操作,而不老局限於FloatPanel等控制項上。