首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除行时的ASP.NET:Paging

删除行时的ASP.NET:Paging
EN

Stack Overflow用户
提问于 2009-09-29 12:14:16
回答 4查看 1.8K关注 0票数 1

我有一个可以删除行的datagrid (使用ajax)。在以下情况下,我的寻呼机出现问题:

假设我的PageSize是10,我有101行,那么就是11页,最后一页只有一个元素。让no假设我在第10页(PageIndex=9)并删除一行。然后我转到第11页(现在是空的,实际上并不存在)。现在ASP给我显示了EmptyDataTemplate,没有寻呼机,所以我不能回去了。

我的方法(不起作用)是检测这种情况,并后退一页:

代码语言:javascript
复制
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。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-29 13:23:40

删除该项时,需要重新绑定数据,以便调整页导航的大小。

不仅要调用databind,还需要重置数据源并调用databind。它不会在两次回发之间保留数据源中的数据。

在执行此操作之前,请确保将pageIndex重置为新set的作用域中的值。

票数 3
EN

Stack Overflow用户

发布于 2009-09-29 12:28:25

SetPage(gridMain.PageIndex - 1)可能不正确。您必须计算当前行计数的最后一页。当前PageIndex-1可能超出范围。

票数 0
EN

Stack Overflow用户

发布于 2009-11-02 14:06:37

使用更新的数据源重新绑定SetPage中的网格,并设置页面索引。检查记录计数/页面大小是否小于分页程序或当前页面索引中的NumberofPages,然后根据记录计数/页面大小减少页面索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1492183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档