www.goodsgy.com
上面ShowPopupInfo函数中的最后两行代码中,使用事件的输入参数设置两个私有变量xAxis和yAxis的值。我们在此的目的是,在与用户点击位置尽可能近的地方显示弹出窗口。 www.goodsgy.com
下面是调用成功时对应的回叫函数的实现代码:www.goodsgy.com
|
以下是引用片段:www.goodsgy.com
OnCompleted: function(result, userContext, methodName) { var uiElement = $get(this.get_uiElement()); var uiBody = $get(this.get_uiBody()); if (uiBody != null) { var textNode = uiBody.firstChild; if (!textNode) { textNode = document.createTextNode(result); uiBody.appendChild(textNode); } else { textNode.nodeValue = result; } if (uiElement != null) { uiElement.style.visibility = "visible"; uiElement.style.display = "inline"; uiElement.style.left = this._xAxis + "px"; uiElement.style.top = this._yAxis + "px"; } } },www.goodsgy.com |
www.goodsgy.com
内容相当简单—把从服务器端返回的数据设置为弹出窗口的显示内容并根据情况确保显示此窗口。www.goodsgy.com
在创建客户端类的最后,我们还必须告诉AJAX框架在客户端注册之,以便可以从客户端访问它:www.goodsgy.com
以下是引用片段: MyServices.Location.registerClass("MyServices.Location"); |
www.goodsgy.com
至此,客户端类MyServices.Location已经成功创建。那么,如何使用它呢?www.goodsgy.com
首先,我们需要在页面加载时定义客户端类的一个新的实例。为此,我们需要在pageLoad函数中编程:www.goodsgy.com
以下是引用片段: var location = null; function pageLoad(sender, args) { location = new MyServices.Location("modal", "modalBody"); location.HidePopupInfo(); } |
www.goodsgy.com
上面的代码简单地创建MyServices.Location类的一个新的实例。然后调用客户端类的成员函数之一来隐藏页面中的弹出窗口。为什么我们在pageLoad函数中创建客户端类的一个实例呢?原因在于,当AJAX环境控制流程到达pageLoad函数时,所有的AJAX客户端和用户定义的JavaScript代码都已经被成功加载。因此,这一时刻我们可以安全地访问任何用户或系统定义的JavaScript代码。www.goodsgy.com
其它几个工具函数比较简单,在此不再赘述。www.goodsgy.com
五、 总结www.goodsgy.com
在本文中,我向你展示了如何通过创建一个AJAX服务和创建自己定制的客户端类来扩展HTML Map控件。在扩展后的控件中,当点击图像中的某个区域时,我们可以通过新型的AJAX方式来给出相关细节信息,而不必刷新整个Web页面。尽管在大部分Web应用中我们较少应用到这种Map控件(也许因此VS2005工具栏中省略之),但如果开发大量图片、图像及地图操作相关的Web应用时,基于本文AJAX改造后的Map控件一定会让你的Web应用更加绚烂多彩。www.goodsgy.com
【附】本文源码调试环境:Windows XP专业版+Visual Studio 2005+ASP.NET AJAX 1.0。www.goodsgy.com
上一页 [1] [2] [3] [4]