代码改变世界

Asp.Net2.0无刷新客户端回调----根据参数,得到返回结果

2008-12-09 10:13  yuejianjun  阅读(189)  评论(1编辑  收藏  举报

前途代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script type="text/javascript">
        function test(con)
        {
            //得到你选择的下拉框的文本再调用呢个CallTheServer,是一个由服务器端输出的js函数
            CallTheServer(con,'');  //此方法由 后台生成到前台来
        }
        function ReceiveServerData(rValue)
        {
            Results.innerHTML = rValue;
            //在<span id="Results"></span>添加由后台生成的方法 CallTheServer(con,'');
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <br />
        <br />
        <input onclick="test('yue')" value="从服务器返回下拉框文本" type='button'/>&nbsp;<br />
        <br />
        <span id="Results"></span>
     
        <br />
    </div>
    </form>
</body>
</html>

后台代码:

 

public partial class Default2 : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
        String callbackScript;
        callbackScript = "function CallTheServer(arg,context)" +
         "{ " + cbReference + "} ;";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "abcdefg", callbackScript, true);
        //第四个参数代表是不是要自动给着脚本加上<script type="text/javascript"></script>标记,当然要加啊

    }

    private string SelectValue;
    public void RaiseCallbackEvent(string eventArgument)
    {
        //  ICallbackEventHandler接口 要实现的方法
        //     处理以控件为目标的回调事件。
        // 参数:
        //   eventArgument:
        //     一个字符串,表示要传递到事件处理程序的事件参数。
        SelectValue = eventArgument;
    }

    public string GetCallbackResult()
    {
        //  ICallbackEventHandler接口 要实现的方法
        //     返回以控件为目标的回调事件的结果。
        //
        // 返回结果:
        //     回调的结果。
        string str="";
        string path = Server.MapPath("XMLFile.xml");
        XmlDocument xd = new XmlDocument();
        xd.Load(path);

        XmlNode node1 = xd["title"];

        str = node1.InnerXml ;

        return "你选择的是:" + str + SelectValue;
    }
}
XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<title>反热钱战争的终极利器——美元储备</title>