你需要的是一個PagingDataSource ...
protected void Page_Load(object sender, EventArgs e)
{
BindData((hdnPage.Value != "" ? Convert.ToInt32(hdnPage.Value) : 0));
}
private void BindData(int? pageNo)
{
PagedDataSource ds = new PagedDataSource();
ds.DataSource = [YOUR DATA SOURCE];
ds.AllowPaging = true;
ds.PageSize = 10;
ds.CurrentPageIndex = pageNo ?? 0;
pnlPaging.Controls.Clear();
for (int i = 0; i < ds.PageCount; i++)
{
if (ds.PageCount < 2)
{
break;
}
if (pageNo == i || (pageNo == null && i == 0))
{
pnlPaging.Controls.Add(new LiteralControl("<span style=\"display:inline-block;margin:0 2px 2px 0;\">" + (i + 1).ToString() + "</span>"));
continue;
}
SuprLinkButton lb = new SuprLinkButton()
{
CommandName = "pageThis",
CommandArgument = i.ToString(),
ID = "lbPage" + i.ToString(),
Text = (i + 1).ToString()
};
lb.Attributes.Add("style", "display:inline-block;margin:0 2px 2px 0;");
lb.Command += new CommandEventHandler(lb_Command);
pnlPaging.Controls.Add(lb);
}
[LISTVIEW].DataSource = ds;
[LISTVIEW].DataBind();
}
我有一個小組來保存所有網頁鏈接和hiddenfield保存當前頁面索引。然後是分頁命令...
protected void lb_Command(object sender, CommandEventArgs e)
{
hdnPage.Value = e.CommandArgument.ToString();
BindData(Convert.ToInt32(e.CommandArgument));
}
感謝您的答覆..可以給我完整的例子..所以我更容易理解,因爲我是ASP.NET新手..如果你有這個項目......你可以把它放在什麼地方? – user1593175 2012-08-15 17:54:24
不幸的是我不能承載這個項目,但我確實更新了我的答案。您有初始綁定發生的頁面加載(調用BindData)和分頁命令。您只需在前端添加一個面板和隱藏字段(pnlPaging,hdnPage),然後用您的數據表替換[您的數據源]並用列表視圖的ID替換[LISTVIEW]。 – CoderMarkus 2012-08-15 18:02:53
好的,謝謝,還有一件事...在DataTable中我應該從表中取出所有的行嗎?即'SELECT * FROM TABLT-NAME' – user1593175 2012-08-15 18:05:10