【问题标题】:Custom paging in ASP Gridview using stored procedures [duplicate]使用存储过程的 ASP Gridview 中的自定义分页 [重复]
【发布时间】:2012-10-22 07:16:47
【问题描述】:

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

我编写了一个 SQL Server 存储过程,它接受输入参数 SelectedPageNumberSelectedPageSize 并给出填充了属于特定页面的结果行的 DataTable。存储过程还有一个MaxPageNumber 作为输出参数。

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

我正在使用 .Net Framework 4.0

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

你能帮帮我吗???

【问题讨论】:

  • 如果您正在执行自定义分页,那么我想最好使用像Repeater 这样更轻的控件而不是GridView,当然您也必须呈现自定义分页器.
  • 如果你想显示页码/MaxPageNumber 那么你可以使用标签控件。

标签: c# asp.net gridview custompaging


【解决方案1】:

您可以使用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
}

【讨论】:

    【解决方案2】:

    要显示页码,您可以创建一个从 MinPageNumber 到 MaxPageNumber 的整数列表,将该列表绑定到作为 DataSource 的 Repeater-Control 并让 Repeater 显示每个页码。根据当前页码,您可能需要重新创建该列表。

    【讨论】:

      【解决方案3】:

      如果您使用自定义分页,则必须创建自定义页面控件来显示页码。您可以将自定义寻呼机放在 gridview 下方,并在页码上的单击事件重新绑定网格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 2014-08-17
        • 2013-04-29
        • 1970-01-01
        • 2011-04-22
        相关资源
        最近更新 更多