ASP開發,ASP.NET AJAX入門系列(5):使用UpdatePanel控件(二)

 2023-10-25 阅读 20 评论 0

摘要:UpdatePanel可以用來創建豐富的局部更新Web應用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一個控件,其強大之處在于不用編寫任何客戶端腳本,只要在一個頁面上添加幾個UpdatePanel控件和一個ScriptManager控件就可以自動實現局部更新。通過本文來學

UpdatePanel可以用來創建豐富的局部更新Web應用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一個控件,其強大之處在于不用編寫任何客戶端腳本,只要在一個頁面上添加幾個UpdatePanel控件和一個ScriptManager控件就可以自動實現局部更新。通過本文來學習一下UpdatePanel其他的一些使用方法(第二篇)。

ASP開發??

主要內容

1.用編程的方法控制UpdatePanel的更新

2UpdatePanel的嵌套使用

3.同一頁面上使用多個UpdatePanel

?

一.用編程的方法控制UpdatePanel的更新

對于UpdatePanel,我們也可以使用編程的方法來控制它的更新,可以通過ScriptManagerRegisterAsyncPostBackControl()方法注冊一個異步提交的控件,并且調用UpdatePanelUpdate()方法來讓它更新。再次用我在前面的文章中用到的一個無聊的時間更新例子來看一下,有時候我覺得例子過于復雜更加不好說明白所要講的內容,如下代碼所示,注意Button1并不包含在UpdatePanel中:

ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@?Page?Language="C#"?AutoEventWireup="true"?CodeFile="Default.aspx.cs"?Inherits="_Default"?%>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<script?runat="server">dot.gif
InBlock.gif
InBlock.gif????
void?Button1_Click(object?sender,?EventArgs?e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????
dot.gif{
InBlock.gif
InBlock.gif????????
this.Label2.Text?=?DateTime.Now.ToString();
InBlock.gif
ExpandedSubBlockEnd.gif????}

ExpandedBlockEnd.gif
None.gif
</script>
None.gif
None.gif
<html?xmlns="http://www.w3.org/1999/xhtml">
None.gif
None.gif
<head?runat="server">
None.gif
None.gif????
<title>Refreshing?an?UpdatePanel?Programmatically</title>
None.gif
None.gif
</head>
None.gif
None.gif
<body>
None.gif
None.gif????
<form?id="form1"?runat="server">
None.gif
None.gif????????
<asp:ScriptManager?ID="ScriptManager1"?runat="server"/>
None.gif
None.gif????????
<div>
None.gif
None.gif????????????
<asp:UpdatePanel?ID="UpdatePanel1"?runat="server"?UpdateMode="Conditional">
None.gif
None.gif????????????????
<ContentTemplate>
None.gif
None.gif????????????????????
<asp:Label?ID="Label1"?runat="server"?Text="更新時間:"></asp:Label>
None.gif
None.gif????????????????????
<asp:Label?ID="Label2"?runat="server"?Text="Label"?ForeColor="Red"></asp:Label><br/><br/>
None.gif
None.gif????????????????????
None.gif
None.gif????????????????
</ContentTemplate>
None.gif
None.gif????????????
</asp:UpdatePanel>
None.gif
None.gif?????????????
<asp:Button?ID="Button1"?runat="server"?Text="Button"??OnClick?=?"Button1_Click"/>
None.gif
None.gif????????
</div>
None.gif
None.gif????
</form>
None.gif
None.gif
</body>
None.gif
None.gif
</html>

這時候不用多說,肯定是整頁提交了,運行如下圖所示:

再次修改上面的例子,使用ScriptManagerRegisterAsyncPostBackControl()注冊Button1為一個異步提交控件,并且調用UpdatePanelUpdate()方法:

ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@?Page?Language="C#"?AutoEventWireup="true"?CodeFile="Default.aspx.cs"?Inherits="_Default"?%>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<script?runat="server">dot.gif
InBlock.gif
InBlock.gif????
void?Page_Load(object?sender,?EventArgs?e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????
dot.gif{
InBlock.gif
InBlock.gif????????ScriptManager1.RegisterAsyncPostBackControl(Button1);
InBlock.gif
ExpandedSubBlockEnd.gif????}

InBlock.gif
InBlock.gif????
InBlock.gif
InBlock.gif????
void?Button1_Click(object?sender,?EventArgs?e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????
dot.gif{
InBlock.gif
InBlock.gif????????
this.Label2.Text?=?DateTime.Now.ToString();
InBlock.gif
InBlock.gif????????
this.UpdatePanel1.Update();
InBlock.gif
ExpandedSubBlockEnd.gif????}

ExpandedBlockEnd.gif
None.gif
</script>
None.gif
None.gif
<html?xmlns="http://www.w3.org/1999/xhtml">
None.gif
None.gif
<head?runat="server">
None.gif
None.gif????
<title>Refreshing?an?UpdatePanel?Programmatically</title>
None.gif
None.gif
</head>
None.gif
None.gif
<body>
None.gif
None.gif????
<form?id="form1"?runat="server">
None.gif
None.gif????????
<asp:ScriptManager?ID="ScriptManager1"?runat="server"/>
None.gif
None.gif????????
<div>
None.gif
None.gif????????????
<asp:UpdatePanel?ID="UpdatePanel1"?runat="server"?UpdateMode="Conditional">
None.gif
None.gif????????????????
<ContentTemplate>
None.gif
None.gif????????????????????
<asp:Label?ID="Label1"?runat="server"?Text="更新時間:"></asp:Label>
None.gif
None.gif????????????????????
<asp:Label?ID="Label2"?runat="server"?Text="Label"?ForeColor="Red"></asp:Label><br/><br/>
None.gif
None.gif????????????????????
None.gif
None.gif????????????????
</ContentTemplate>
None.gif
None.gif????????????
</asp:UpdatePanel>
None.gif
None.gif?????????????
<asp:Button?ID="Button1"?runat="server"?Text="Button"??OnClick?=?"Button1_Click"/>
None.gif
None.gif????????
</div>
None.gif
None.gif????
</form>
None.gif
None.gif
</body>
None.gif
None.gif
</html>

這時候可以看到,已經是異步提交了:

二. UpdatePanel的嵌套使用

UpdatePanel還可以嵌套使用,即在一個UpdatePanelContentTemplate中還可以放入另一個UpdatePanel。當最外面的UpdatePanel被觸發更新時,它里面的子UpdatePanel也隨著更新,里面的UpdatePanel觸發更新時,只更新它自己,而不會更新外層的UpdatePanel。看下面的例子:

ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@?Page?Language="C#"?AutoEventWireup="true"?CodeFile="Default2.aspx.cs"?Inherits="Default2"?%>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<script?runat="server">dot.gif
ExpandedBlockEnd.gif
None.gif
</script>
None.gif
None.gif?
None.gif
None.gif
<html?xmlns="http://www.w3.org/1999/xhtml">
None.gif
None.gif
<head?id="Head1"?runat="server">
None.gif
None.gif????
<title>UpdatePanelUpdateMode?Example</title>
None.gif
ExpandedBlockStart.gifContractedBlock.gif????
<style?type="text/css">dot.gif
InBlock.gif
InBlock.gif????div.NestedPanel
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????
{dot.gif}{
InBlock.gif
InBlock.gif??????position
:?relative;
InBlock.gif
InBlock.gif??????margin
:?2%?5%?2%?5%;
InBlock.gif
ExpandedSubBlockEnd.gif????
}

InBlock.gif
ExpandedBlockEnd.gif????
</style>
None.gif
None.gif
</head>
None.gif
None.gif
<body>
None.gif
None.gif????
<form?id="form1"?runat="server">
None.gif
None.gif????????
<div>
None.gif
None.gif????????????
<asp:ScriptManager?ID="ScriptManager"?
None.gif
None.gif???????????????????????????????runat
="server"?/>
None.gif
None.gif????????????
<asp:UpdatePanel?ID="OuterPanel"?
None.gif
None.gif?????????????????????????????UpdateMode
="Conditional"?
None.gif
None.gif?????????????????????????????runat
="server">
None.gif
None.gif????????????????
<ContentTemplate>
None.gif
None.gif????????????????????
<div>
None.gif
None.gif????????????????????????
<fieldset>
None.gif
None.gif????????????????????????????
<legend>Outer?Panel?</legend>
None.gif
None.gif????????????????????????????
<br?/>
None.gif
None.gif????????????????????????????
<asp:Button?ID="OPButton1"?
None.gif
None.gif????????????????????????????????????????Text
="Outer?Panel?Button"?
None.gif
None.gif????????????????????????????????????????runat
="server"?/>
None.gif
None.gif????????????????????????????
<br?/>
None.gif
None.gif????????????????????????????Last?updated?on
None.gif
None.gif????????????????????????????
<%=?DateTime.Now.ToString()?%>
None.gif
None.gif????????????????????????????
<br?/>
None.gif
None.gif????????????????????????????
<br?/>
None.gif
None.gif????????????????????????????
<asp:UpdatePanel?ID="NestedPanel1"?
None.gif
None.gif???????????????????????????????????????????????UpdateMode
="Conditional"
None.gif
None.gif???????????????????????????????????????????????runat
="server">
None.gif
None.gif????????????????????????????????
<ContentTemplate>
None.gif
None.gif????????????????????????????????????
<div?class="NestedPanel">
None.gif
None.gif????????????????????????????????????????
<fieldset>
None.gif
None.gif????????????????????????????????????????????
<legend>Nested?Panel?1</legend>
None.gif
None.gif????????????????????????????????????????????
<br?/>
None.gif
None.gif????????????????????????????????????????????Last?updated?on
None.gif
None.gif????????????????????????????????????????????
<%=?DateTime.Now.ToString()?%>
None.gif
None.gif????????????????????????????????????????????
<br?/>
None.gif
None.gif????????????????????????????????????????????
<asp:Button?ID="NPButton1"
None.gif
None.gif????????????????????????????????????????????????????????Text
="Nested?Panel?1?Button"?
None.gif
None.gif????????????????????????????????????????????????????????runat
="server"?/>
None.gif
None.gif????????????????????????????????????????
</fieldset>
None.gif
None.gif????????????????????????????????????
</div>
None.gif
None.gif????????????????????????????????
</ContentTemplate>
None.gif
None.gif????????????????????????????
</asp:UpdatePanel>
None.gif
None.gif????????????????????????
</fieldset>
None.gif
None.gif????????????????????
</div>
None.gif
None.gif????????????????
</ContentTemplate>
None.gif
None.gif????????????
</asp:UpdatePanel>
None.gif
None.gif????????
</div>
None.gif
None.gif????
</form>
None.gif
None.gif
</body>
None.gif
None.gif
</html>

運行后如下:


三.同一頁面上使用多個UpdatePanel

使用UpdatePanel的時候并沒有限制在一個頁面上用多少個UpdatePanel,所以我們可以為不同的需要局部更新的頁面區域加上不同的UpdatePanel。由于UpdatePanel默認的UpdateModeAlways,如果頁面上有一個局部更新被觸發,則所有的UpdatePanel都將更新,這是我們不愿看到的,我們只需要UpdatePanel在它自己的觸發器觸發的時候更新就可以了,所以需要把UpdateMode設置為Conditional

來看一下官方網站上提供的一個例子:包括兩個UpdatePanel,其中一個用來用戶輸入而另一個則用來顯示數據,每一個UpdatePanelUpdateMode屬性都設置為Conditional。當我們單擊Cancel按鈕時,只有用來用戶輸入的那個UpdatePanel刷新,當單擊Insert按鈕時,兩個UpdatePanel都刷新。代碼如下:

ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@?Page?Language="C#"?%>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif@?Import?Namespace="System.Collections.Generic"?%>
None.gif
None.gif?
None.gif
None.gif
<html?xmlns="http://www.w3.org/1999/xhtml"?>
None.gif
None.gif
<head?id="Head1"?runat="server">
None.gif
None.gif????
<title>Enter?New?Employees</title>
None.gif
ExpandedBlockStart.gifContractedBlock.gif????
<script?runat="server">dot.gif
InBlock.gif
InBlock.gif????????private?List
<Employee>?EmployeeList;
InBlock.gif
InBlock.gif?
InBlock.gif
InBlock.gif????????protected?
void?Page_Load()
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????
dot.gif{
InBlock.gif
InBlock.gif????????????
if?(!IsPostBack)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????
dot.gif{
InBlock.gif
InBlock.gif????????????????EmployeeList?
=?new?List<Employee>();
InBlock.gif
InBlock.gif????????????????EmployeeList.Add(
new?Employee(1,?"Jump",?"Dan"));
InBlock.gif
InBlock.gif????????????????EmployeeList.Add(
new?Employee(2,?"Kirwan",?"Yvette"));
InBlock.gif
InBlock.gif????????????????ViewState[
"EmployeeList"]?=?EmployeeList;
InBlock.gif
ExpandedSubBlockEnd.gif????????????}

InBlock.gif
InBlock.gif????????????
else
InBlock.gif
InBlock.gif????????????????EmployeeList?
=?(List<Employee>)ViewState["EmployeeList"];
InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????EmployeesGridView.DataSource?
=?EmployeeList;
InBlock.gif
InBlock.gif????????????EmployeesGridView.DataBind();
InBlock.gif
ExpandedSubBlockEnd.gif????????}

InBlock.gif
InBlock.gif????????
InBlock.gif
InBlock.gif????????protected?
void?InsertButton_Click(object?sender,?EventArgs?e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????
dot.gif{
InBlock.gif
InBlock.gif????????????
if?(String.IsNullOrEmpty(FirstNameTextBox.Text)?||
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif???????????????String.IsNullOrEmpty(LastNameTextBox.Text))?
dot.gif{?return;?}
InBlock.gif
InBlock.gif?
InBlock.gif
InBlock.gif????????????
int?employeeID?=?EmployeeList[EmployeeList.Count-1].EmployeeID?+?1;
InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????string?lastName?
=?Server.HtmlEncode(FirstNameTextBox.Text);
InBlock.gif
InBlock.gif????????????string?firstName?
=?Server.HtmlEncode(LastNameTextBox.Text);
InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????FirstNameTextBox.Text?
=?String.Empty;
InBlock.gif
InBlock.gif????????????LastNameTextBox.Text?
=?String.Empty;
InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????EmployeeList.Add(
new?Employee(employeeID,?lastName,?firstName));
InBlock.gif
InBlock.gif????????????ViewState[
"EmployeeList"]?=?EmployeeList;
InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????EmployeesGridView.DataBind();
InBlock.gif
InBlock.gif????????????EmployeesGridView.PageIndex?
=?EmployeesGridView.PageCount;
InBlock.gif
ExpandedSubBlockEnd.gif????????}

InBlock.gif
InBlock.gif?
InBlock.gif
InBlock.gif????????protected?
void?CancelButton_Click(object?sender,?EventArgs?e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????
dot.gif{
InBlock.gif
InBlock.gif????????????FirstNameTextBox.Text?
=?String.Empty;
InBlock.gif
InBlock.gif????????????LastNameTextBox.Text?
=?String.Empty;
InBlock.gif
ExpandedSubBlockEnd.gif????????}

InBlock.gif
InBlock.gif????
InBlock.gif
InBlock.gif????????[Serializable]
InBlock.gif
InBlock.gif????????public?class?Employee
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????
dot.gif{
InBlock.gif
InBlock.gif????????????private?
int?_employeeID;
InBlock.gif
InBlock.gif????????????private?string?_lastName;
InBlock.gif
InBlock.gif????????????private?string?_firstName;
InBlock.gif
InBlock.gif?
InBlock.gif
InBlock.gif????????????public?
int?EmployeeID
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????
dot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????get?
dot.gif{?return?_employeeID;?}
InBlock.gif
ExpandedSubBlockEnd.gif????????????}

InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????public?string?LastName
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????
dot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????get?
dot.gif{?return?_lastName;?}
InBlock.gif
ExpandedSubBlockEnd.gif????????????}

InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????public?string?FirstName
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????
dot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????get?
dot.gif{?return?_firstName;?}
InBlock.gif
ExpandedSubBlockEnd.gif????????????}

InBlock.gif
InBlock.gif????????????
InBlock.gif
InBlock.gif????????????public?Employee(
int?employeeID,?string?lastName,?string?firstName)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????
dot.gif{
InBlock.gif
InBlock.gif????????????????_employeeID?
=?employeeID;
InBlock.gif
InBlock.gif????????????????_lastName?
=?lastName;
InBlock.gif
InBlock.gif????????????????_firstName?
=?firstName;
InBlock.gif
ExpandedSubBlockEnd.gif????????????}

InBlock.gif
ExpandedSubBlockEnd.gif????????}

InBlock.gif
InBlock.gif?
InBlock.gif
ExpandedBlockEnd.gif????
</script>
None.gif
None.gif
</head>
None.gif
None.gif
<body>
None.gif
None.gif????
<form?id="form1"?runat="server">
None.gif
None.gif????
<div>
None.gif
None.gif????????
&nbsp;</div>
None.gif
None.gif????????
<asp:ScriptManager?ID="ScriptManager1"?runat="server"?EnablePartialRendering="true"?/>
None.gif
None.gif????????
<table>
None.gif
None.gif????????????
<tr>
None.gif
None.gif????????????????
<td?style="height:?206px"?valign="top">
None.gif
None.gif????????????????????
<asp:UpdatePanel?ID="InsertEmployeeUpdatePanel"?runat="server"?UpdateMode="Conditional">
None.gif
None.gif????????????????????????
<ContentTemplate>
None.gif
None.gif??????????????????????????
<table?cellpadding="2"?border="0"?style="background-color:#7C6F57">
None.gif
None.gif????????????????????????????
<tr>
None.gif
None.gif??????????????????????????????
<td><asp:Label?ID="FirstNameLabel"?runat="server"?AssociatedControlID="FirstNameTextBox"?
None.gif
None.gif?????????????????????????????????????????????Text
="First?Name"?ForeColor="White"?/></td>
None.gif
None.gif??????????????????????????????
<td><asp:TextBox?runat="server"?ID="FirstNameTextBox"?/></td>
None.gif
None.gif????????????????????????????
</tr>
None.gif
None.gif????????????????????????????
<tr>
None.gif
None.gif??????????????????????????????
<td><asp:Label?ID="LastNameLabel"?runat="server"?AssociatedControlID="LastNameTextBox"?
None.gif
None.gif?????????????????????????????????????????????Text
="Last?Name"?ForeColor="White"?/></td>
None.gif
None.gif??????????????????????????????
<td><asp:TextBox?runat="server"?ID="LastNameTextBox"?/></td>
None.gif
None.gif????????????????????????????
</tr>
None.gif
None.gif????????????????????????????
<tr>
None.gif
None.gif??????????????????????????????
<td></td>
None.gif
None.gif??????????????????????????????
<td>
None.gif
None.gif????????????????????????????????
<asp:LinkButton?ID="InsertButton"?runat="server"?Text="Insert"?OnClick="InsertButton_Click"?ForeColor="White"?/>
None.gif
None.gif????????????????????????????????
<asp:LinkButton?ID="Cancelbutton"?runat="server"?Text="Cancel"?OnClick="CancelButton_Click"?ForeColor="White"?/>
None.gif
None.gif??????????????????????????????
</td>
None.gif
None.gif????????????????????????????
</tr>
None.gif
None.gif??????????????????????????
</table>
None.gif
None.gif??????????????????????????
<asp:Label?runat="server"?ID="InputTimeLabel"><%=DateTime.Now?%></asp:Label>
None.gif
None.gif????????????????????????
</ContentTemplate>
None.gif
None.gif????????????????????
</asp:UpdatePanel>
None.gif
None.gif????????????????
</td>
None.gif
None.gif????????????????
<td?style="height:?206px"?valign="top">
None.gif
None.gif????????????????????
<asp:UpdatePanel?ID="EmployeesUpdatePanel"?runat="server"?UpdateMode="Conditional">
None.gif
None.gif????????????????????????
<ContentTemplate>
None.gif
None.gif????????????????????????????
<asp:GridView?ID="EmployeesGridView"?runat="server"?BackColor="LightGoldenrodYellow"?BorderColor="Tan"
None.gif
None.gif????????????????????????????????BorderWidth
="1px"?CellPadding="2"?ForeColor="Black"?GridLines="None"?AutoGenerateColumns="False">
None.gif
None.gif????????????????????????????????
<FooterStyle?BackColor="Tan"?/>
None.gif
None.gif????????????????????????????????
<SelectedRowStyle?BackColor="DarkSlateBlue"?ForeColor="GhostWhite"?/>
None.gif
None.gif????????????????????????????????
<PagerStyle?BackColor="PaleGoldenrod"?ForeColor="DarkSlateBlue"?HorizontalAlign="Center"?/>
None.gif
None.gif????????????????????????????????
<HeaderStyle?BackColor="Tan"?Font-Bold="True"?/>
None.gif
None.gif????????????????????????????????
<AlternatingRowStyle?BackColor="PaleGoldenrod"?/>
None.gif
None.gif????????????????????????????????
<Columns>
None.gif
None.gif????????????????????????????????????
<asp:BoundField?DataField="EmployeeID"?HeaderText="Employee?ID"?/>
None.gif
None.gif????????????????????????????????????
<asp:BoundField?DataField="LastName"?HeaderText="Last?Name"?/>
None.gif
None.gif????????????????????????????????????
<asp:BoundField?DataField="FirstName"?HeaderText="First?Name"?/>
None.gif
None.gif????????????????????????????????
</Columns>
None.gif
None.gif????????????????????????????????
<PagerSettings?PageButtonCount="5"?/>
None.gif
None.gif????????????????????????????
</asp:GridView>
None.gif
None.gif????????????????????????????
<asp:Label?runat="server"?ID="ListTimeLabel"><%=DateTime.Now?%></asp:Label>
None.gif
None.gif????????????????????????
</ContentTemplate>
None.gif
None.gif????????????????????????
<Triggers>
None.gif
None.gif????????????????????????????
<asp:AsyncPostBackTrigger?ControlID="InsertButton"?EventName="Click"?/>
None.gif
None.gif????????????????????????
</Triggers>
None.gif
None.gif????????????????????
</asp:UpdatePanel>
None.gif
None.gif????????????????
</td>
None.gif
None.gif????????????
</tr>
None.gif
None.gif????????
</table>
None.gif
None.gif????
</form>
None.gif
None.gif
</body>
None.gif
None.gif
</html>

運行后效果如下:

?

示例代碼下載:http://files.cnblogs.com/Terrylee/ASPNETAJAXUpdatePanelDemo2.rar

轉載于:https://www.cnblogs.com/Terrylee/archive/2006/11/01/ASPNET_AJAX_UpdatePanle_Part2.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/164034.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息