我有一个 gridview,其 DataSourceID 属性设置为自定义 ObjectDataSource 对象。当AllowPaging 设置为True 时,GridView 在回发后消失。如果我将AllowPaging 设置为False 就可以了。有人可以帮我解释一下吗?:)

编辑: 我感到困惑的另一件事是我认为如果你设置 数据源ID 网格会在需要时从数据源获取数据。如果网格因为不保存数据而消失,那么为什么 gridview 不从数据源获取所需的数据?

有帮助吗?

解决方案

回发发生后,数据源可能不会被维护或重新填充,并且没有项目可以填充网格。启用分页时,您是否正确处理数据源对象的状态(重新绑定/保持源活动)?

这听起来像是一个模糊的答案,但如果没有源如何获取数据的示例,就很难诊断为什么这些项目会消失。

编辑:
我想到的方法是回调分页/排序。不过我确实找到了一些关于 ODS 和寻呼的信息。确保您已设置以下内容:

  1. 网格视图:AllowPaging 当然你需要设置PageSize。
  2. 对象数据源:EnablePaging,还需要设置:
    • 最大行参数名称=“最大行数”
    • StartRowIndexParameterName=“startRowIndex”
    • 选择计数方法=“记录计数”

我认为如果你想手动处理分页大小等,你只需要设置第2项的3个子项。

然后你可以阅读更多相关内容 这里.

其他提示

要回答更多@ adam0101的回应,有什么的我觉得他的意思“......原来,我的自定义数据源被返回的零记录计数。”是,你可能需要将数据源“的 的重新连接”到GridView。 ASP.net会自动知道你retriving记录及放”,其中‘n’是下一个页面的下一个第一排。该解决方案是更多的情况下,你不希望允许asp.net为在你的GridView自动处理数据后,也许是因为想另一个事件后加载数据(例如LOAD DATA按钮) ,而不是在页面加载的第一次。但正如亚当下面提到的真正原因是他“......曾经创造了继承的ObjectDataSource数据源的子类,但它是不正确的实现。”对不起,我假设有亚当。感谢

然而,我的解决方案的其余部分,我认为会为那些停留在手动使用导出的数据源工作。

设置你的GridView按上述方法及注意事项 - 没有一个DataSource属性!这是我的示例:

     <asp:GridView ID="gvStudents" DataKeyNames="StudentID" runat="server" 
            ShowFooter="True" AutoGenerateColumns="False" Width="100%" AllowSorting="True" AllowPaging="true" PageSize="10" OnPageIndexChanging="gvStudents_PageIndexChanging">

接下来做一个私有方法或程序,你可以永远当你需要强制GridView控件到一个新的页面时致电。

private void BindGridViewServer(GridView gv1)
{
    gv1.DataSource = sdsStudents;   //re-attach the datasource
    gv1.DataBind();                 //get a page of data AllowPaging must be true
}

接下来,创建方法OnPageIndexChanging

protected void gvStudents_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView myGV = (GridView)sender;
    myGV.PageIndex = e.NewPageIndex;
    BindGridViewServer(myGV);
}

为了完成这个答案的缘故,这里是我的代码时,我想,我加载数据 - 而不是当一个邮用被激发,这是默认......

    protected void btnSEARCH(object sender, EventArgs e)
        {
//some code
                    //bind the gridview to the datasource here and then bind!
                    gvStudents.DataSource = sdsStudents;
                    gvStudents.DataBind();
//more code etc
        }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top