ajax局部刷新


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

举例:如txtbox1触发局部更新,设置页面所有txtbox颜色为红色,那么结果是:整个页面中只有在ContentTemplate内的txtbox才会变为红色,页面中其它的txtbox不发生任何改变。
注:局部刷新内部按纽若想设txtbox为红色,则要也设置<asp:AsyncPostBackTrigger ControlID=”局部内部”>,以使局部得到刷新。
即:设置一区域为局部刷新,若想使这个区域接受来自服务器传来的数据,发生刷新,则要将触发控件加到AsyncPostBackTrigger,无论是此触发控件在局部外还是局部内。

原理:首先ScriptManager和UpdatePanel在服务器端达成一致,截获了Page的Render()方法并在页面上为需要进行异步回送的控件输出了一些专门的JavaScript脚本。然后在客户端,若这些控件通过_doPostBack()函数试图引发整页的回送,则上面提到的JavaScript脚本将截获这个调用,并将页面中各个用户输入的控件的值,加上当前的试图状态 (ViewState)用XMLHttpRequest对象发送服务器。而此时服务器却对此丝毫不知,仍把它当作一次传统的回发,老老实实地引发了一次完整生命周期,并根据回送生成新的页面结构。随后又是在Page的()方法中,ScriptManager和UpdatePanel再次获取了其中的实现过程,把不在UpdatePanel中的内容统统踢出,只发送给客户端更新的部分。最后,客户端的XMLHttpRequest对象收到了这部分信息,并在不知不觉悄悄地更新了UpatePanel中定义的内容。

<asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
??????? </asp:ScriptManager>
?<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server” ChildrenAsTriggers=”false” UpdateMode=”Conditional”>
??????????? <Triggers>
??????????????? <asp:AsyncPostBackTrigger ControlID=”gvMain”></asp:AsyncPostBackTrigger>?
?? ??? ??? ??? ??? ?//ControlID=”gvMain 指示在哪个控件作出动作时响应
?????????????????? //AsyncPostBackTrigger 指明哪个控件采用异步回送
??????????? </Triggers>
??????????? <ContentTemplate>
????????????? ?
??????????????? <asp:GridView ID=”gvList” runat=”server” CssClass=”grid” Width=”100%”
??????????????? PageSize=”12″ AllowPaging=”True” AutoGenerateColumns=”False” CellPadding=”4″
??????????????? BorderStyle=”Double”>
??????????????? <HeaderStyle CssClass=”gridHeader”></HeaderStyle>
??????????????? <PagerSettings Visible=”False” />
??????????????? <RowStyle CssClass=”gridItem” />
??????????????? <Columns>????????????????? ?
??????????????????????? <asp:BoundField DataField=”CustomerName” HeaderText=”客户” >
?????????????????????? ?
??????????????????????????? <ItemStyle HorizontalAlign=”Left” Width=”15%”/>
?????????????????????? </asp:BoundField>
???????????????????????? <asp:BoundField DataField=”Address” HeaderText=”地址” >
?????????????????????? ?
??????????????????????????? <ItemStyle HorizontalAlign=”Left” Width=”35%”/>
?????????????????????? </asp:BoundField>
??????????????????????? <asp:BoundField DataField=”Tel” HeaderText=”联系电话” >
?????????????????????? ?
??????????????????????????? <ItemStyle HorizontalAlign=”Left” Width=”35%”/>
?????????????????????? </asp:BoundField>
???????????????????????? <asp:BoundField DataField=”UserName” HeaderText=”顾问” >
?????????????????????? ?
??????????????????????????? <ItemStyle HorizontalAlign=”Left” Width=”15%”/>
?????????????????????? </asp:BoundField>
??????????????????? </Columns>
??????????? </asp:GridView>
???????????? ?
??????????? </ContentTemplate>
??????? </asp:UpdatePanel>
????????