技术开发 频道

Atlas在页面加载时调用Web Service

【IT168 技术文档】

    很多时候我们需要在页面加载以后立刻调用一些Web Service,比如一个客户端的Atlas ListView会在加载后立刻得到初始化的填充数据。虽然这可以使用Atlas的InitialData控件完成,但对于其它的一些要求,比如在页面加载后立刻执行一段Atlas脚本(其中用到了Atlas对JavaScript的扩展),我们仍需要一个页面加载的事件来触发这些操作。

    很多朋友采用如下的两种方法:

    1.直接在页面的Script段中书写要执行的脚本。
    2.在页面的onload JavaScript事件处理方法中书写。

    这些都是不正确的方式,会有错误发生,原因很简单:Atlas的客户端实现也是一段JavaScript,需要先执行一次才可以工作,而上述两种方法的语句都是在Atlas客户端实现被初始化前运行的,自然会导致错误。

    Atlas充分意识到了这个需求,提供了Framework内部的OnLoad事件,该事件将在Atlas Framework初始化以后被引发。想捕获这个事件,您需要在页面的Atlas XML Script中声明:

<page xmlns:script="http://schemas.microsoft.com/xml-script/2005"> <components> <application id="application" load="OnApplicationLoad" /> </components> </page>

    其中application作为当前运行的Atlas程序的引用,提供了一个load事件,这样我们通过指定它的事件处理函数,即可在Atlas Framework初始化之后执行我们的代码。
    下面来看一个例子,Web Service如下,还是简单的两个数相加:

[WebMethod] public int AddInt(int int1, int int2) { return int1 + int2; }

    然后ASPX页面中添加ScriptManager并对上述Web Service进行引用:

<atlas:ScriptManager ID="scriptManager" runat="server" EnableScriptComponents="true"> <Services> <atlas:ServiceReference Path="SimpleWebService.asmx" /> </Services> </atlas:ScriptManager>

    页面上再添加两个input用来提供两个加数:

<input id="value1" type="text" value="1" /> <input id="value2" type="text" value="2" />

    加上捕获Atlas Framework load事件的XML Script定义:

<script type="text/xml-script"> <page xmlns:script="http://schemas.microsoft.com/xml-script/2005"> <components> <application id="application" load="OnApplicationLoad" /> </components> </page> </script>

    下面是事件处理函数以及相应的Callback,可以看到我们应用了三种Atlas Framework提供的扩展:

    1.$()方法,等同于document.getElementById()
    2.Sys.UI.TextBox类,封装了HTML的input元素
    3.对Web Service调用的Mashup

function OnApplicationLoad() { var value1 = new Sys.UI.TextBox($('value1')); var value2 = new Sys.UI.TextBox($('value2')); Dflying.SimpleWebService.AddInt( value1.get_text(), value2.get_text(), OnComplete ); return false; } function OnComplete(result) { alert(result); }

    运行结果,没有任何问题:


0
相关文章