加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET DataGrid和自定义分页

发布时间:2020-12-15 23:57:20 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试在ASP.NET中实现DataGrid,并希望实现自定义分页,这样我就不必一次性提供所有数据.我花了几个小时在网上研究,但没有找到任何有用的东西. 当我查看页面时,我看到网格中的第一组结果,前一个链接被禁用.然而,当我单击下一步时,我再次看到网格的第一页,
我正在尝试在ASP.NET中实现DataGrid,并希望实现自定义分页,这样我就不必一次性提供所有数据.我花了几个小时在网上研究,但没有找到任何有用的东西.

当我查看页面时,我看到网格中的第一组结果,前一个链接被禁用.然而,当我单击下一步时,我再次看到网格的第一页,其中前一个链接被禁用.在调试代码时,我确定永远不会调用MyGrid_PageIndexChanged()事件处理程序.

我在下面提供了简化代码.我已经更改了变量名称和省略方法,专注于数据网格分页问题.

在ASPX文件中:

<asp:DataGrid ID="myGrid" runat="server" GridLines="None" UseAccessibleHeader="true" AutoGenerateColumns="false" AllowPaging="true" AllowCustomPaging="true" PageIndexChanged="MyGrid_PageIndexChanged">
<PagerStyle Mode="NextPrev" NextPageText="Next >" PrevPageText="< Previous" />

<Columns>
<asp:BoundColumn HeaderText="Title" DataField="Name" />
<asp:BoundColumn HeaderText="Date" DataField="Date" />
</Columns>
</asp:DataGrid>

并在CS文件中:

protected void Page_Load(object sender,EventArgs e)
    {
        if (!IsPostBack)
        {
                            myGrid.PageSize = 20;
                            myGrid.VirtualItemCount = GetNumItems();
            BindMyGrid();
        }
    }

    protected void MyGrid_PageIndexChanged(object sender,DataGridPageChangedEventArgs e)
    {
        myGrid.CurrentPageIndex = e.NewPageIndex;
        BindMyGrid();
    }

    private int GetNumItems()
    {
        return 500;
    }

    private void BindMyGrid()
    {
            Data[] array = GetDataFromInternetSomehow();
            this.myGrid.DataSource = array;
            this.myGrid.DataBind();
    }

    private class Data
    {
        public string Date { get; set; }
        public string Name { get; set; }
    }

对此的任何想法将非常感激.

解决方法

ASPX中存在错误:连接PageIndexChanged事件处理程序使用属性OnPageIndexChanged(而不是代码中的PageIndexChanged):
<asp:DataGrid ID="myGrid" runat="server"
   OnPageIndexChanged="MyGrid_PageIndexChanged"  /// <--- here's the error
   ...

然后,如果您有AllowCustomPaging =“true”,则必须确保GetDataFromInternetSomehow()方法仅返回当前所选页面的数据,例如将当前页面传递给方法并仅返回相应的数据:

GetDataFromInternetSomehow(e.NewPageIndex);

否则,禁用自定义分页,它将正常工作(但每次都会加载所有数据).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读