在代码2中可以看到定义UpdateProgress控件非常简单,用户友好信息在UpdateProgress控件的ProgressTemplate元素中运行——正因为这样,我们已经有效地处理了由GridView引起的异步请求的响应时间问题。
多控件和 UpdatePanel控件
到目前为止已经为单个UpdatePanel控件里的单控件写了地址,同时我们将使用由UpdatePanel提供的多个控件的异步行为。执行这一功能非常简单,最好的方法就是在本地把用户端口分成几个小功能,然后给每一个小功能指定一个UpdatePanel。
接着看一下代码3,这个例子在同一页码上有一个GridView 和一个 FormView,每一个GridView 和 FormView都有自己的UpdatePanel 和 UpdateProgress控件。
代码3: Multiple UpdatePanel’s
Collapse
<asp:ScriptManager
ID="sm"
runat="server" />
<asp:UpdatePanel
ID="upGv"
runat="server">
<ContentTemplate>
<asp:GridView
ID="gvPeople"
runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False"
DataKeyNames="personid"
DataSourceID="odsPeople"
Width="400px">
<Columns>
<asp:CommandField
ShowEditButton="True" />
<asp:CommandField
ShowDeleteButton="true" />
<asp:BoundField
DataField="firstname"
HeaderText="First Name"
SortExpression="firstname" />
<asp:BoundField
DataField="lastname"
HeaderText="Last Name"
SortExpression="lastname" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress
ID="upProgGv"
runat="server"
AssociatedUpdatePanelID="upGv">
<ProgressTemplate>
<p>Please wait Loading...</p>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel
ID="upFv"
runat="server">
<ContentTemplate>
<asp:FormView
ID="fvPerson"
runat="server"
DataSourceID="odsPeople"
DefaultMode="Insert">
<InsertItemTemplate>
<asp:TextBox
ID="txtFirstName"
Text='<%# Bind("firstname") %>'
runat="server" />
<asp:TextBox
ID="txtLastName"
Text='<%# Bind("lastname") %>'
runat="server" />
<asp:LinkButton
ID="lbInsert"
CommandName="Insert"
Text="Add Person"
runat="server" />
<asp:LinkButton
ID="lbCancel"
CommandName="Cancel"
Text="Cancel"
runat="server" />
</InsertItemTemplate>
</asp:FormView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress
ID="upProgFv"
runat="server"
AssociatedUpdatePanelID="upFv">
<ProgressTemplate>
<p>Adding Person Please wait...</p>
</ProgressTemplate>
</asp:UpdateProgress>