在asp.net框架中如何調用AJAX,或者異步調用后臺方法進行提交或更新。
          近段時間,公司有個項目需要做成象新浪網的股票信息那樣,實時進行刷新。經過摸索測試,下面把經驗進行分享:
          一、在頁面的cs文件中,該類一定要實現: System.Web.UI.ICallbackEventHandler接口
          即:繼承System.Web.UI.Page類,并實現 System.Web.UI.ICallbackEventHandler接口
          然后在Page_Load方法內(或DataBind())中進行注冊:如下
          //用于回調的

          string callbackReference = ClientScript.GetCallbackEventReference(this"arg""ReceiveCallback""context"false);
          string callbackScript 
          = string.Format("function CallServer(arg,context){{ {0}}}", callbackReference);
          ClientScript.RegisterClientScriptBlock(
          this.GetType(), "CallServer", callbackScript, true);

          解釋:
          string callbackReference = ClientScript.GetCallbackEventReference(this, "arg", "ReceiveCallback", "context", false);
          該代碼主要是注冊一個回調事件,其中context為頁面的div的ID值,主要是回調返回后需要重寫頁面的div的innerHtml(即控件)。
          string callbackScript = string.Format("function CallServer(arg,context){{ {0}}}", callbackReference);
          該代碼主要是通過回調事件訂制一個js方法,供頁面調用(可能相當于委托)

          二、重寫ICallbackEventHandler接口的相應方法。

           

          #region javascript異步調用,重寫rptList
              
          public void RaiseCallbackEvent(string eventArgument)
              
          {
                  
          //自己寫的數據綁定方法,取數據庫的數據,重新綁定到Repeater控件
           BindData();
              }


              
          public string GetCallbackResult()
              
          {
                  
          //返回再次綁定后的Repeater的表現內容
                  return RenderControl(this.rptBidding);
              }


              
          private string RenderControl(Control control)
              
          {
                  StringWriter writer1 
          = new StringWriter(CultureInfo.InvariantCulture);
                  HtmlTextWriter writer2 
          = new HtmlTextWriter(writer1);
                  control.RenderControl(writer2);
                  writer2.Flush();
                  writer2.Close();
                  
          return writer1.ToString() + "@" + newLogId;
              }

              #endregion


           三、頁面表現時,需要定義一個div,里面任何內容都可以。
             <div id="context">          
           <asp:Repeater ID="rptBidding" runat="server">
               <HeaderTemplate>
               <div>頁面表現內容</div>
              </HeaderTemplate>
              <ItemTemplate>
               <div>頁面表現內容</div>
               </ItemTemplate>
               <AlternatingItemTemplate>
                 <div>頁面表現內容</div>
               </AlternatingItemTemplate>
           </asp:Repeater>
             </div>
          在js中增加如下js方法,以供后臺調用。
             function turnPage(pageIndex){
                CallServer(pageIndex,'content');
             }
             //5秒刷新下,即取數據庫的值。重新綁定數據
             setInterval(turnPage(1), 5000);
            
             function ReceiveCallback(arg,context){
                var array = new Array();
                array = arg.split('@');
                //重新編譯div的innerHTML
                var container = document.getElementById('context');
                container.innerHTML = array[0];
             }

          結束運行。
          posted on 2008-12-23 14:55 aisoft 閱讀(1965) 評論(0)  編輯  收藏 所屬分類: .NET技術
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          隨筆檔案(2)

          文章分類(12)

          文章檔案(12)

          收藏夾

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 新丰县| 花莲市| 贵州省| 全南县| 克什克腾旗| 镇安县| 收藏| 建阳市| 乌鲁木齐市| 伊吾县| 鹿泉市| 黄骅市| 望江县| 永定县| 鹤山市| 武鸣县| 东兰县| 禹州市| 绥芬河市| 佳木斯市| 秦皇岛市| 日喀则市| 会同县| 进贤县| 深泽县| 白河县| 德安县| 邢台县| 沅陵县| 游戏| 岳阳县| 女性| 娄底市| 隆化县| 城口县| 长顺县| 永清县| 嘉荫县| 连城县| 仪陇县| 措勤县|