【问题标题】:Custom paging in a gridview in asp.net在 asp.net 中的 gridview 中自定义分页
【发布时间】:2017-01-19 10:31:13
【问题描述】:

我想在 asp.net 中为我的 gridview 进行自定义分页,因为我的数据库中有很多信息。我的问题是当我生成链接按钮时。我把它们放在一个面板中,但我的页面有 7000 多个按钮。当我将它们添加到我的面板中时,它会将它们全部显示在我页面的 10 行中。我只需要显示 10 个,当我按下它们中的最后一个来显示其他 10 个按钮时。 我的代码:

for (int index = 0; index < nrPages; index++)
                {
                    int pageNo = index + 1;
                    LinkButton lnk = new LinkButton();
                    lnk.Click += new EventHandler(PageChange);

                    lnk.ID = "PageLink" + pageNo.ToString();
                    lnk.CommandName = "Page";
                    lnk.Text = " " + pageNo.ToString() + " ";
                    lnk.CommandArgument = index.ToString();

                    PanelPager.Controls.Add(lnk);
                }

public void PageChange(object sender, EventArgs e)
        {
            int pageIndex = int.Parse((sender as LinkButton).CommandArgument);
            object dataSource = GetDataSource(OwnerId, null, pageIndex);
            PushData(dataSource);

        }

我在这里使用我的链接按钮

【问题讨论】:

  • 只是您正在对页码进行分页,因此逻辑将与您对实际数据进行分页相同。
  • 请记住,每次加载 GridView 时,仍会从数据库/视图状态中检索所有 70.000 多行。这意味着仅显示 10 行会产生大量额外流量。开始使用 Ajax 检索页面数据集。
  • @VDWWD。不,不是每次都检索。我在我的 Sql 服务器中使用 ROW_NUM(),我只在页面索引和页面大小之间加载

标签: c# asp.net gridview custompaging


【解决方案1】:
int nrPages = 7000;

public void RenderPageNumbers(int nextPageNo)
{
    int pageSize = 10;
    int totalPages = nrPages / pageSize;
    var startIndex = ((nextPageNo -1) * pageSize ) + 1
    for (int index = startIndex; index < startIndex + pageSize; index++)
    {
        int pageNo = index;
        LinkButton lnk = new LinkButton();
        lnk.Click += new EventHandler(PageChange);

        lnk.ID = "PageLink" + pageNo.ToString();
        lnk.CommandName = "Page";
        lnk.Text = " " + pageNo.ToString() + " ";
        lnk.CommandArgument = index.ToString();

        PanelPager.Controls.Add(lnk);
    }
}

【讨论】:

  • 您正在设置链接的命令参数?您打算如何使用它?
  • 看看我的编辑,我以前知道索引页面并从数据库中只带一些行
  • 知道了……那个链接是用来切换数据页的吧?那你就别用我说的话了……抱歉……
  • 我的意思是从页码的最后一个按钮调用这个方法,这样它就会呈现接下来的 10 个页码。
  • np,还有其他想法吗?
猜你喜欢
  • 2014-04-21
  • 2011-04-22
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多