农国苏:asp.net在Client端使用另一种异步技术CallBack (完善中……)

第一步(在页面上创建“输入”和“输出”区域):myPage.aspx
<form id="form1" runat="server">
   <div>
       输入姓名:<input id="txtUserName" type="text" />
       输出信息:<span id="Results" ></span>
   </div>
</form>
第二步(分别创建两个javascript方法通过DOM控制“输入”和“输出”):myPage.aspx
<script type="text/JavaScript">
    function DoSearch()
    {
        var txtFirstName = document.getElementById("txtUserName");
        CallServer(txtFirstName.value, "");
    }
   
    function ReceiveServerData(txtUserInfo)
    {
        Results.innerText = txtUserInfo;
    }
   
    setInterval('DoSearch()',1000);
</script>
第三步(在后台注册CallServer和ReceiveServerData):myPage.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
  
  String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
  String callbackScript;
  callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + "} ;";
  //注册JavaScript
  Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
}
第四步(后台继承ICallbackEventHandler并实现RaiseCallbackEvent()和GetCallbackResult())
//引发Callback事件处理
public partial class myPage : System.Web.UI.Page,ICallbackEventHandler
{
   protected string txtUserInfo;//信息

   public void RaiseCallbackEvent(string txtFirstName)
   { 
       txtUserInfo="信息";
   }
   //返回Callback结果
   public string GetCallbackResult()
   {
      return txtUserInfo; //返回信息
   }
}
前台myPage.aspx完整代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page.aspx.cs" Inherits="myPage" %>

<!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>Page</title>
    <script type="text/JavaScript">
    function DoSearch()
    {
        var txtFirstName = document.getElementById("txtUserName");
        CallServer(txtFirstName.value, "");
    }
   
    function ReceiveServerData(txtUserInfo)
    {
        Results.innerText = txtUserInfo;
    }
   
    setInterval('DoSearch()',1000);
  </script>

</head>
<body>
   <form id="form1" runat="server">
      <div>
         输入姓名:<input id="txtUserName" type="text" />
         输出信息:<span id="Results" ></span>
      </div>
   </form>
</body>
</html>

后台myPage.aspx.cs完整代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class myPage : System.Web.UI.Page,ICallbackEventHandler
{
   protected string txtUserInfo;//信息

   protected void Page_Load(object sender, EventArgs e)
   {
  
      String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
      String callbackScript;
      callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + "} ;";

      //注册JavaScript
      Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
   }

   public void RaiseCallbackEvent(string txtFirstName)
   { 
       txtUserInfo="信息";
   }
   //返回Callback结果
   public string GetCallbackResult()
   {
      return txtUserInfo; //返回信息
   }
}

posted @ 2008-07-03 15:10 农国苏 阅读(680) 评论(3)  编辑 收藏

  回复  引用    
#1楼 2008-07-03 20:52 | ljj [未注册用户]
l楼主,这个还是ajax啊
  回复  引用  查看    
#2楼 [楼主]2008-07-05 00:07 | 农国苏      
@ ljj
知道了,谢谢!
  回复  引用    
#3楼 2008-08-13 10:45 | 浣花居士 [未注册用户]
谢谢LZ,看了你的文章受益匪浅.

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-05 00:09 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: