自定义数据表与分页

我使用我的自定义DataTable作为我的ListViewDataSource 。 现在,我面临的问题是Paging不起作用。

我想要做的是,当我点击第1页,第2页,依此类推,我应该一次只能获取10行。

我的意思是,当页面加载时我想只获取前10行,点击2我想获取接下来的10行。 但是,在第1页上单击返回不应再次执行SQL语句,只需从某处获取数据( ViewState / Cache )。

什么是正确的方法? 我该怎么办?

注意:我不想使用SQL DataSource

你需要的是一个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("" + (i + 1).ToString() + "")); 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(); } 

我有一个面板来保存所有页面链接和一个隐藏字段来保存当前页面索引。 然后有分页命令……

 protected void lb_Command(object sender, CommandEventArgs e) { hdnPage.Value = e.CommandArgument.ToString(); BindData(Convert.ToInt32(e.CommandArgument)); }