1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          asp-UpdatePanel客戶端回傳事件管理

          來源:互聯網轉載 時間:2023-12-14 09:24:08

          asp:UpdatePanel客戶端回傳事件管理

          Asp:UpdatePanel是在Asp.Net WebForm中的一個局部刷新控件,雖然很好用,但是在使用過程中卻發現如果局部刷新的數據需要再次使用頁面js進行格式化,頁面則會亂套,所以在這里我們需要對UpdatePanel的回傳過程進行控制。

          1. Sys.WebForms.PageRequestManager類
          管理服務器 UpdatePanel 控件在瀏覽器中的部分頁更新,并通過使用客戶端腳本定義屬性、事件和方法以自定義 Web 頁。

          //獲取實例對象
          var prm = Sys.WebForms.PageRequestManager.getInstance();

          2. 回傳的周期控制

          • initializeRequest
            在開始處理異步請求之前引發。 可以使用此事件取消回發。

          • beginRequest
            在開始處理異步回發、將回發發送到服務器之前引發。 可以使用此事件來設置請求標頭,或開始一個動畫以指示正在處理頁面。

          • pageLoading
            在收到服務器對異步回發的響應之后、頁上任何內容更新之前引發。 可以使用此事件為更新的內容提供自定義轉換效果。

          • pageLoaded
            在因同步回發或異步回發而刷新頁上的所有內容之后引發。 可以使用此事件為更新的內容提供自定義轉換效果。

          • endRequest
            在異步回發完成,并且控制權返回到瀏覽器之后引發。 可以使用此事件向用戶提供通知或將錯誤記錄到日志。

          3 . 演示

          <%@ Page Language="C#" autoeventwireup="true" CodeBehind="Default.aspx.cs" Inherits="Demo.Default" %>
          <!DOCTYPE html>
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head runat="server">
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>UpdatePanel</title>
          <link href="Content/bootstrap.min.css" rel="stylesheet" />
          <style type="text/css"> .odd { background-color: #00ff90; } .even { background-color: #0094ff; } </style>
          </head>
          <body>
          <p >
          <p >
          <hr />
          <form  runat="server">
          <p>
          <asp:scriptmanager runat="server" ID="ScriptManager"></asp:ScriptManager>
          <asp:TextBox runat="server" ID="txtKeyword" CssClass="input-sm"></asp:TextBox>
          <asp:Button runat="server" ID="btnSearch" Text="Search..." CssClass="btn btn-primary" OnClick="btnSearch_Click" />
          <asp:UpdatePanel runat="server" ID="UpdatePanel">
          <ContentTemplate>
          <table >
          <thead>
          <tr>
          <th>Id</th>
          <th>Name</th>
          <th>...</th>
          <th>...</th>
          <th>...</th>
          </tr>
          </thead>
          <tbody>
          <asp:Repeater runat="server" ID="rpTable">
          <ItemTemplate>
          <tr>
          <td><%# Eval("Id") %></td>
          <td><%# Eval("Name") %></td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          </tr>
          </ItemTemplate>
          </asp:Repeater>
          </tbody>
          </table>
          </ContentTemplate>
          <Triggers>
          <asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
          </Triggers>
          </asp:UpdatePanel>
          </p>
          </form>
          </p>
          </p>
          <script src="Scripts/jquery-1.10.2.min.js"></script>
          <script type="text/javascript"> function initTableStyle() { 
           $('tbody tr').each(function (index, item) { 
           $(item).addClass(index % 2 == 0 ? 'even' : 'odd'); }); } $(function () { 
           initTableStyle(); }); </script>
          </body>
          </html>
          
          using System;
          using System.Collections.Generic;
          using System.Linq;
          namespace Demo
          {
          public partial class Default : System.Web.UI.Page
          {
          protected void Page_Load(object sender, EventArgs e)
          {
          if (!IsPostBack)
          {
          InitEmployees();
          List<Employee> lstEmployees = Cache["Employee"] as List<Employee>;
          if(lstEmployees != null)
          BindingTable(lstEmployees);
          }
          }
          void InitEmployees()
          {
          if (Cache["Employee"] == null)
          {
          List<Employee> lstEmployees = new List<Employee>();
          lstEmployees.Add(new Employee { Id = 1, Name = "張三" });
          lstEmployees.Add(new Employee { Id = 2, Name = "李四" });
          lstEmployees.Add(new Employee { Id = 3, Name = "王五" });
          lstEmployees.Add(new Employee { Id = 4, Name = "趙六" });
          Cache["Employee"] = lstEmployees;
          }
          }
          void BindingTable(IEnumerable<Employee> employees)
          {
          this.rpTable.DataSource = employees;
          this.rpTable.DataBind();
          }
          protected void btnSearch_Click(object sender, EventArgs e)
          {
          List<Employee> lstEmployees = Cache["Employee"] as List<Employee>;
          if (lstEmployees != null)
          {
          lstEmployees = lstEmployees.Where(x => x.Name.Contains(this.txtKeyword.Text.Trim()) 
          || string.IsNullOrEmpty(this.txtKeyword.Text)).ToList();
          BindingTable(lstEmployees);
          }
          }
          }
          class Employee
          {
          public int Id { get; set; }
          public string Name { get; set; }
          }
          }

          運行結果:

          效果就是,上面的通過搜索獲取數據進行展示,然后通過 javascript來控制table的class。運行之后,初始化時貌似沒有什么問題,但是當我們點擊search…按鈕之后,我們發現table的行背景色沒有了,為什么?
          這個是因為當我們點擊搜索按鈕之后,新獲取的數據被呈現在頁面上,但是我們初始化表格樣式的javascript代碼并沒有再次執行,所以我們的表格樣式會出現下面的這種情況:

          如果我們需要通過javascript來對表格樣式進行再次渲染,那么我們就需要了解UpdatePanel回傳的過程;

          下面我們在javascript中加入以下代碼:

          var prm = Sys.WebForms.PageRequestManager.getInstance();
          prm.add_initializeRequest(function (sender, args) { 
          
          console.log('add_initializeRequest');
          });
          prm.add_beginRequest(function (sender, args) { 
          
          console.log('add_beginRequest');
          });
          prm.add_pageLoading(function (sender, args) { 
          
          console.log('add_pageLoading');
          });
          prm.add_pageLoaded(function (sender, args) { 
          
          console.log('add_pageLoaded');
          });
          prm.add_endRequest(function (sender, args) { 
          
          console.log('add_endRequest');
          });

          當我們再次點擊搜索按鈕之后,瀏覽器控制臺中輸出的的順序為:

          add_initializeRequest
          add_beginRequest
          add_pageLoading
          add_pageLoaded
          add_endRequest

          很明顯,當我們的UpdatePanel每次回傳過程中,這幾個被注冊的事件都會先后執行,我們可以在add_pageLoaded或者add_endRequest中加入我們渲染表格的代碼,我這里就在add_endRequest里面加入這段代碼:

          prm.add_endRequest(function (sender, args) { 
          
          console.log('add_endRequest');
          initTableStyle();
          });

          再次點擊搜索的結果:

          說明我們這樣做完全OK!

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          如何升級BOOTCAMP?訓練營遵循您的Mac操作系統,而不是單獨升級。解決方案:bootcamp 3.0與windows不是很兼容,所以鼠標不能多點觸控,另外,聲卡和顯卡不是很兼容,導致分辨率低,沒有聲音。在windows下運行Apple update(應該在開頭)將bootcamp更新為最新版本。更新并重新啟動后,設置分辨率,設置bootcamp的第一個分區(所選分區將在引導后首先啟動),設置...

          共享單車自動扣費怎么弄?騎自行車共享??梢杂弥Ц秾氈Ц?。先打開支付寶。找到自行車共享的專欄。點擊進入。你可以看到它。有掃碼開車這個詞,然后點掃碼開車。下一步是打開藍牙。同意就好。確認以后開車。這樣,當騎行結束時,你就可以打開車鎖。注意鎖車,那你就不用操作支付寶自動支付了。非常方便。共享單車自動扣費怎么弄?共享單自動扣費主要是因為你去單車共享借車玩的時候,騎完還車的時候,第一次打開手機用或者支付寶支...

          成都冷凍食品批發在那?1.冷凍食品批發市場:四川省成都市雙流區呂穎楓涇西。2.成都李因冷凍食品交易市場:四川省成都市青白江區貨運大道附近。3.姐妹冷凍食品批發:四川省成都市郫都區陽光北路與陽光南路交叉口西。4.冷凍食品批發部:四川省成都市青羊區興業街附近。5.瑞豐冷凍食品批發:四川省成都市龍泉驛區天盛路附近。6.年翔宇冷凍食品批發:四川省成都市成華區逸夫路。7.誠信冷凍食品批發零售:四川省成都市雙...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>