callback 在asp.net应用实例

作者:袖梨 2022-06-25

由用户触发

 callback的一般使用方法还算简单,直接参照msdn的帮助和范例就足够了。但是想要真正用好、用精,或者想开发一些基于callback机制的web组件,那么,就要先深入了解callback的实现机制了。在本文中,teddy将和您一起解析callback的整个调用、反馈机制,相信对于帮助您更好的使用callback,将能有一定的益处




" />







  1. 在button的 onclick 中写入:
    onclick="<%= clientscript.getcallbackeventreference(this,"document.getelementbyid('txtusername').value","oncallback",null) %>" 
  2. 网页特效中编写相应的函数
    function oncallbacknobtn()
    {
    callserver(document.getelementbyid('txtusername').value,"");
    }
  3. 在 xxx.asp教程x.cs 中继承 icallbackeventhandler  并实现其方法。
    public partial class webpage_callbackbtn : system.web.ui.page, icallbackeventhandler
    {
    protected string struserinfo; //callback最终得到的信息
    protected void page_load(object sender, eventargs e)
    {
    }

    #region icallbackeventhandler 成员

    public string getcallbackresult()
    {
    return struserinfo;
    }

    public void raisecallbackevent(string eventargument) //服务端的处理函数
    {
    if (eventargument == "") return;
    system.data.sqlclient.sqlconnection conn = new system.data.sqlclient.sqlconnection();
    conn.connectionstring = system.web.configuration.webconfigurationmanager.connectionstrings["nowthwindconnectionstring"].connectionstring;

    sqlcommand cmd = new sqlcommand();
    cmd.commandtype = commandtype.text;
    cmd.parameters.add("@firstname", sqldbtype.nvarchar, 10)
    .value = eventargument;
    cmd.commandtext = "select employeeid, lastname from employees where firstname=@firstname";
    cmd.connection = conn;

    sqldatareader reader;
    connectionstate previousconnectionstate = conn.state;

    try
    {
    if (conn.state == connectionstate.closed)
    {
    conn.open();
    }

    reader = cmd.executereader();

    using (reader)
    {
    while (reader.read())
    {
    // process sprocresults datareader here.
    struserinfo += reader[0];
    }
    }
    struserinfo += "###";
    }
    finally
    {
    if (previousconnectionstate == connectionstate.closed)
    {
    conn.close();
    }
    }
    }

    #endregion
    }

    raisecallbackevent() 负责接收 client 端的javascript 所传送过来的参数,以此参数查询数据库教程中的数据,最后由 getcallbackresult() 将结果传回 client端的javascript,最后将结果显示出来。
  4. 完成  o(∩_∩)o~ 现在在 textbox 中输入 nancy 则会显示 1### 。如果输入的名字在数据库中没有则不显示,(我的只是完成了《圣殿祭司的asp.net教程》中的这一节的一部分)
②自动触发。
  1. 如上 3. 在 xxx.aspx.cs 中继承 icallbackeventhandler  并实现其方法。
  2. 在 javascript中添加
  3. 在 aspx.cs 中动态注册 javascript
    protected void page_load(object sender, eventargs e)
    {
    string cbreference = page.clientscript.getcallbackeventreference(this,"arg", "receiveserverdata", null);
    //page.clientscript.getcallbackeventreference(this,"arg", "receiveserverdata", null);
    string callbackscript;
    callbackscript = "function callserver(arg,context){" + cbreference + "};";
    //string callbackscript = "function callserver(arg,context){webform_docallback('__page',arg,receiveserverdata,null,null,false)};";
    page.clientscript.registerclientscriptblock(this.gettype(), "callserver123", callbackscript, true);
    }
  4. 完成

相关文章

精彩推荐