1、前台
在Toolbar控件中添加一个按钮,在ClientAction事件上添加一个javascript方法startQuery();
<esri:CommandClientAction="startQuery()"JavaScriptFile=""Name="查询"/>
在HTML页面<HEAD></HEAD>中放入一段JavaScript脚本:
<scripttype="text/javascript">
functionstartQuery()
{
context='startSea';
//传往后台的参数
varmessage='search';
// document.getElementById('DropDownList1').value为图层名
message +=','+ document.getElementById('DropDownList1').value;
//注册一个回调,sCallBackFunctionInvocation与后台回调的内容一至
<%=sCallBackFunctionInvocation%>
}
</script>
2、后台
后台CS代码中,继承ICallbackEventHandler接口,并实现接口中的两个方法:
GetCallbackResult()和RaiseCallbackEvent(string eventArgument)
publicpartialclassDefault: System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
//注册回调的字符串
publicstringsCallBackFunctionInvocation;
//回调的字符串
privatestringmapstring;
protectedvoidPage_Load(objectsender,EventArgse)
{
//在Page_Load注册回调
sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this,"message","processCallbackResult","context","postBackError",true);
}
///<summary>
///接收回调传到后来的参数message,eventArgs实际上就是message的值
///</summary>
///<param name="eventArgs"></param>
publicvoidRaiseCallbackEvent(stringeventArgs)
{
//通过判断eventArgs包含的参数,来确定要触发的事件
if(eventArgs.Contains("search"))
{
string[] messages = eventArgs.Split(',');
stringstr= messages[1];
StartSearch(str);
}
}
///<summary>
///实现功能的代码
///</summary>
///<param name="ea"></param>
private void StartSearch (stringea)
{
string[] messages = ea.Split(',');
stringstrQuery = messages[1];
ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionalitymapFunct = (ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality)Map1.GetFunctionality(0);
MapViewmapView = mapFunct.MapView;
FeatureLayerpFeatureLayer = (FeatureLayer)mapView.Layers.FindByName(strQuery);
//获得查询的包络线adfEnv
Map1.Extent = adfEnv;
//缩放到包络线的范围内
Map1.Refresh();
//将回调信息发回GetCallbackResult()这个方法
mapstring =this.Map1.CallbackResults.ToString();
}
publicstringGetCallbackResult()
{
//将回调信息发回前台
returnmapstring;
}
}
回调的顺序:startQuery()触发JavaScript脚本(前台)-->
执行已经注册的回调<%=sCallBackFunctionInvocation%>(前台)-->
触发Page_Load事件回调代码sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this,"message","processCallbackResult","context","postBackError",true);获得前台传往后台的参数“message”(后台)-->
RaiseCallbackEvent(stringeventArgs)(后台)-->
StartSearch(stringea)实现功能的代码(后台)-->
GetCallbackResult()(后台)
浙公网安备 33010602011771号