我有一个可以删除行的datagrid (使用ajax)。在以下情况下,我的寻呼机出现问题:
假设我的PageSize是10,我有101行,那么就是11页,最后一页只有一个元素。让no假设我在第10页(PageIndex=9)并删除一行。然后我转到第11页(现在是空的,实际上并不存在)。现在ASP给我显示了EmptyDataTemplate,没有寻呼机,所以我不能回去了。
我的方法(不起作用)是检测这种情况,并后退一页:
public void Bind()
{
gridMain.DataBind();
}
public void SetPage(int page)
{
gridMain.PageIndex = page;
gridMain.DataBind();
}
protected void ldsGridMain_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
selectArgs = e;
e.Result = (new EnquiryListController()).GetEnquiryList(OnBind(this), supplier);
}
protected void ldsGridMain_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
totalRows = selectArgs.Arguments.TotalRowCount;
//Detect if we need to update the page:
if (gridMain.PageIndex > 0 && (gridMain.PageSize * gridMain.PageIndex + 1) > totalRows) SetPage(gridMain.PageIndex - 1);
}
protected void gridMain_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SetPage(e.NewPageIndex);
}我可以看到,使用正确的页面索引调用了SetPage,但似乎没有调用数据库绑定,因为我仍然得到了EmptyDataTemplate。
发布于 2009-09-29 13:23:40
删除该项时,需要重新绑定数据,以便调整页导航的大小。
不仅要调用databind,还需要重置数据源并调用databind。它不会在两次回发之间保留数据源中的数据。
在执行此操作之前,请确保将pageIndex重置为新set的作用域中的值。
发布于 2009-09-29 12:28:25
SetPage(gridMain.PageIndex - 1)可能不正确。您必须计算当前行计数的最后一页。当前PageIndex-1可能超出范围。
发布于 2009-11-02 14:06:37
使用更新的数据源重新绑定SetPage中的网格,并设置页面索引。检查记录计数/页面大小是否小于分页程序或当前页面索引中的NumberofPages,然后根据记录计数/页面大小减少页面索引。
https://stackoverflow.com/questions/1492183
复制相似问题