尽管类似的问题已经被问过很多次了,但问题仍然没有解决。这是问题: 我有一个
GridView
,它包含在选项卡容器 AJAX
控件中,该控件本身位于 UpdatePanel
内。 Gridview
工作得很好,并且其相应的方法被准确地触发,但是当我在单击第 2 页后启用 paging
(例如)时,GridView
会隐藏自己。这是我的 PageIndexChanging() 方法:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
UpdatePanel2.Update();
}
为什么分页会导致
GridView
停止正常工作?我能做什么?
解决方案是,每次更改页面索引时,您都应该重新填充用于填充网格视图的数据集。通过这种方式,您可以确保在由 gridview 页码触发的每个单独的回发中,都会填充结果。
进一步研究:
http://msdn.microsoft.com/en-us/library/cc295545.aspx
与UpdatePanel控件不兼容的控件
以下 ASP.NET 控件与部分页面更新不兼容,因此不适合在 UpdatePanel 控件内工作:
- GridView 和 DetailsView 控件的 EnableSortingAndPagingCallbacks 属性设置为 true 时。默认为 false。
我刚刚尝试了上面的代码。我遇到了同样的问题,现在一切正常。
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
// UpdatePanel2.Update(); <-- Remove this line from your code.
}
我在更新面板中有 GridView。您是否也在 .aspx 文件中写入了 PageIndexChanging 事件?
希望这有帮助。
我遇到了同样的问题,将 updatepanel 属性 UpdateMode="Conditional" 更改为 UpdateMode="Always" 并设置属性 ChildrenAsTriggers="true" 解决了我的问题。
为此,您必须在页面索引更改事件中重新设置数据源。性能会降低,但这就是你可以让它发挥作用的方式。
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.DataSource = ;//Set again the datasource
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
UpdatePanel2.Update();
}