使用 JavaScript 更新 UpdatePanel

來源:互聯網
上載者:User
在 ASP.NET AJAX 機制中,UpdatePanel 有著相當重要的地位,它讓開發人員不用撰寫 AJAX 相關程式碼,就能享有
AJAX 的效果。一般包含在 UpdatePanel 中的子控制項,若子控制項有執行 PostBack 動作時,UpdatePanel
機制在前端會去攔截 __doPostBack 函式,使得控制項產生的 PostBack 都會經由 UpdatePanel
統一處理局部更新的動作。

可是有時我們會需要透過 JavaScript 要求 UpdatePanel 做更新的動作,一般都會以為直接呼叫 __doPostBack 即可。以下以一個實例來做測試,我們在頁面的 UpdatePanel 放置一個 Label 來顯示最新時間。然後 Input (type=button) 在 onclick 直接呼叫 __doPostBack 函式。

*.aspx 1        <asp:ScriptManager ID="ScriptManager1" runat="server" />
 2        <div>
 3            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
 4                <ContentTemplate>
 5                    Server Time:
 6                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
 7                </ContentTemplate>
 8            </asp:UpdatePanel>
 9            <input id="Button1" type="button" value="button" onclick="__doPostBack('','');" />
10        </div>

*.aspx.vb1     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
2         Label1.Text = Now.ToString()
3     End Sub

可是實際執行並不如預期,UpdatePanel 中的時間是更新了,可是頁面會產生閃爍的情形,這個 PostBack 並不會受 UpdatePanel 控管。

其實只要做一點修改就可以要求 UpdatePanel 做更新的動作,就是在 __doPostBack 函式的第一個引數
(eventTarget),如下範例傳入 UpdatePanel 的 ClientID 即可。實際執行的結果頁面就不會再閃爍了,因為 PostBack
動作已經在 UpdatePanel 的控管中。

<input id="Button1" type="button" value="button" onclick="__doPostBack('UpdatePanel1','');" />

程式碼下載:UpdatePanelRefresh.rar

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.