1

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

我编写了一个 SQL Server 存储过程,它接受输入参数SelectedPageNumberSelectedPageSizeDataTable用属于特定页面的结果行填充。存储过程还有一个MaxPageNumberas 输出参数。

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

我正在使用 .Net Framework 4.0

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

你能帮我吗 ???

4

3 回答 3

4

您可以使用控件创建寻呼机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
}
于 2012-10-22T07:36:54.040 回答
0

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

于 2012-10-22T07:30:43.973 回答
0

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

于 2012-10-22T07:31:02.277 回答