gpt4 book ai didi

c# - 带分页的自定义数据表

转载 作者:行者123 更新时间:2023-11-30 18:37:59 25 4
gpt4 key购买 nike

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

我想做的是,当我点击页面 12 等等时,我一次只能获取 10 行时间。

我的意思是当页面加载时我只想获取前 10 行,点击 2 我想获取接下来的十行。但是点击返回页面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("<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();
}

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

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

关于c# - 带分页的自定义数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com