目前还有用到webform的同学应该经常会遇到想局部刷新GridView的功能,但是不知道该如何实现才好,很多人都想到UpdatePanel的方式,我今天就简单分享一下这个做法,想要用到UpdatePanel就离不开ScriptManager:
1、ScriptManager和UpdatePanel的简单了解
ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异 步局部更新区域,ScriptManger(脚本管理控件)提供客户端脚本生成与管理UpdatePanel的功能,通过使用ScriptManger能够进行整个页面的局部更新的管理,UpdatePanel必须依赖于ScriptManger。
ScriptManger的位置要在form表单内,所有Updatepanel之上,而且只能在页面中被使用一次,也就是说每个页面只能使用一个ScriptManger控件,ScriptManger控件用来进行该页面的全局管理。创建一个ScriptManger控件后系统自动生成HTML代码,示例代码如下所示:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
然后,将需要局部刷新的GridView放入到UpdatePanel中并且加上定时刷新的Timer,前台代码:
<asp:UpdatePanel ID="updPanel" runat="server">
<ContentTemplate>
<asp:Timer ID="timerTest" runat="server" Interval="2000"
OnTick="timerTest_Tick">
</asp:Timer>
<asp:DataGrid ID="ChuFangShenHeGrid" runat="server" PageSize="12" AllowPaging="True" AutoGenerateColumns="False"
Width="100%" CssClass="Data" CellPadding="3" GridLines="None" OnItemDataBound="ChuFangShenHeGrid_ItemDataBound" OnLoad="ChuFangShenHeGrid_Load">
<AlternatingItemStyle CssClass="Data_AlternatingItem"></AlternatingItemStyle>
<ItemStyle CssClass="Data_Item"></ItemStyle>
<HeaderStyle CssClass="Data_Header"></HeaderStyle>
...
<PagerStyle Visible="False"></PagerStyle>
</asp:DataGrid>
</ContentTemplate>
</asp:UpdatePanel>
后台实现代码,ChuFangShenHeGrid_Load GridView的加载事件,timerTest的定时事件:
public void ChuFangShenHeGrid_Load(object sender, EventArgs e)
{
BindChuFangShenHeGrid(PageIndex);//数据绑定
}
protected void timerTest_Tick(object sender, EventArgs e)
{
ChuFangShenHeGrid_Load(sender, e);
}
public void BindChuFangShenHeGrid(int pageIndex)
{
string StartTime = this.txtKaiFangRiQi1.Value;
string EndTime = this.txtKaiFangRiQi2.Value;
string KeyName = this.keyName.Value;
string ShenHeState = this.selZhuangtai.Value;
IHisYiZhuController menzShenHeList = new IHisYiZhuController();
DataSet set = menzShenHeList.GetChuFangShenHeList(StartTime, EndTime, KeyName, ShenHeState);
if (set != null && set.Tables.Count > 0)
{
AutoPaging1.RecordCount = set.Tables[0].Rows.Count;
ChuFangShenHeGrid.CurrentPageIndex = pageIndex;
ChuFangShenHeGrid.DataSource = set.Tables[0];
ChuFangShenHeGrid.DataBind();
}
}
这样就实现简单的定时刷新数据了,有好的意见或建议,多多交流