Updatepanel的重新整理,除了使用之前在Updatepanel的Triggers中加入controlID外,還有一種上一篇用到過的方法update()函數,這篇部落格我學習到另一種方法,用JavaScript中的__doPostBack()(兩條底線)來實現,我們達到的頁面效果是,當點擊Button1時,Updatepanel1中的label就擷取系統時間。
註: __ dopostback這個前台函數的功能,主要是用於web控制項的postback,它是通過__eventTraget,__eventArgument兩個隱藏控制項向服務端發送控制資訊的。
頁面配置:1.在頁面中拖放scriptmanager1。
2.放入Updatepanel1,將Updatepanel1的UpdateMode=conditional。
3.在Updatepanel1中,放入一個label1。
4.在Updatepanel1的外部放入一個html的Button1.
頁面的原始碼如下:當點擊Button1時,引發__ dopostback函數,致使頁面重新整理。
注意__doPostBack的用法
1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head runat="server">
5 <title>無標題頁</title>
6</head>
7<body>
8 <form id="form1" runat="server">
9 <div >
10 <asp:ScriptManager ID="ScriptManager1" runat="server">
11
12 </asp:ScriptManager>
13 <script language ="javascript">
14 function ComfirmRefresh()
15 {
16 if(confirm("你確認要重新整理嗎?"))
17 {
18 //第一個參數是你希望提交到伺服器的控制項的ID號,第二個參數是事件參數
19 __doPostBack("UpdatePanel1","Refresh");
20 }
21 }
22 </script>
23 <input id="Button1" type="button" value="button" onclick="ComfirmRefresh()" />
24 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode ="Conditional">
25 <ContentTemplate>
26 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
27 </ContentTemplate>
28 </asp:UpdatePanel>
29 </div>
30 </form>
31</body>
32</html>
33
cs代碼如下:
頁面載入是判斷是否是部分重新整理
1public partial class _Default : System.Web.UI.Page
2{
3 protected void Page_Load(object sender, EventArgs e)
4 { //當前ScriptManager1回傳的值是AsyncPostback並且導致ScriptManager1的非同步回傳事件的控制項為UpdatePanel1時。
5 if (ScriptManager1.IsInAsyncPostBack && ScriptManager1.AsyncPostBackSourceElementID == "UpdatePanel1")
6 //label1擷取系統目前時間。
7 Label1.Text = DateTime.Now.ToString();
8 }
9}
10