c# - 使用存储过程在 ASP Gridview 中自定义分页

标签 c# asp.net gridview custompaging

<分区>

我正在尝试创建一个带有自定义分页的 GridView。我有非常大的数据,所以为了提高十倍速度,我正在尝试进行自定义分页。

我编写了一个 SQL Server 存储过程,该过程采用输入参数 SelectedPageNumberSelectedPageSize 并为 DataTable 填充属于特定页面。存储过程还有一个 MaxPageNumber 作为输出参数。

我能够将页面数据绑定(bind)到 GridView,但我无法弄清楚如何将页码显示为存储过程中的 MaxPageNumber 值。

我正在使用 .Net Framework 4.0

它可能是重复的,但我找不到解决方案。

你能帮帮我吗???

最佳答案

你可以使用 Repeater 控件创建一个寻呼机,像这样

// These are your outputs from that SP
int MaxPageNumber = 10,
    CurrentPageNumber = 4;

void BindPager()
{
    DataTable PagerData = new DataTable();
    PagerData.Columns.Add("pageNo");
    for (int i = 1; i < MaxPageNumber; i++)
      PagerData.Rows.Add(i);
    pager.DataSource = PagerData;
    pager.DataBind();
}

<asp:Repeater runat="server" ID="pager" onitemcommand="pager_ItemCommand" 
        onitemdatabound="pager_ItemDataBound">
   <ItemTemplate>
       <asp:Button runat="server" ID="pageNo" 
                   Text='<%# Eval("pageNo") %>' 
                   CommandArgument='<%# Eval("pageNo") %>'
                   CommandName="DoPaging" />
   </ItemTemplate>
</asp:Repeater>


protected void pager_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
  // Code to highlight current page
  if (e.Item.ItemType == ListItemType.Item || 
      e.Item.ItemType == ListItemType.AlternatingItem)
  {
     Button pageNo = e.Item.FindControl("pageNo") as Button;
     if (pageNo == null) return;
     if (pageNo.Text == CurrentPageNumber.ToString())
        pageNo.BackColor = Color.Blue;
     else
        pageNo.BackColor = Color.Gray;
  }
}

protected void pager_ItemCommand(object source, RepeaterCommandEventArgs e)
{
  // perform your paging here according to page number
}

关于c# - 使用存储过程在 ASP Gridview 中自定义分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13006615/

相关文章:

c# - 是否可以检查 C# 中 switch case 语句中的空值

c# - 我可以用另一个线程检测挂起的进程并从中恢复吗?

c# - 如何在面板中并排设置控件

c# - 当我运行我的网站时, GridView 没有出现

c# - 将列表保存到数据库 Entity Framework

c# - 日期时间自定义格式 - 将 AM/PM 显示为大写而不是 am/pm

c# - 异步调用 .NET 方法并在完成后绑定(bind)到网格

java - Arraylist 将最后一个元素读取为倒数第二个元素

java - picasso 图像未在 Gridview Android 中加载

c# - checkin 前运行单元测试