我正在尝试创建一个带有自定义分页的 GridView。我有非常大的数据,所以为了提高十倍速度,我正在尝试进行自定义分页。
我编写了一个 SQL Server 存储过程,该过程采用输入参数 SelectedPageNumber
、SelectedPageSize
并为 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
}