CMS 转发器 Select 前 N 行++

CMS Repeater Select top N row++

我需要一个加载更多按钮来控制转发器显示的内容。

点击“加载更多”按钮后,我在后端执行的步骤如下:

  1. 中继器绑定数据(完整 data/All 行)。
  2. 保持转发器的最大项目数(静态)。
  3. 将总行设置为显示(静态)+ 1 并将值初始化为 select 前 N 行作为限制。
  4. Repeater再次绑定数据(只显示数量)。
  5. 检查转发器项目数是否小于最大项目数,如果不是则隐藏加载更多按钮。

假设这些步骤可以给我预期的输出?

//Declaration
public static int max = 0;
public static int totalShow = 0;

//SetupControl()
if(!IsPostBack){
  rptItems.ClassName = "Blog";
  rptItems.Path = "/Shared/%"
  rptItems.DataBind();
  max = rptItems.Items.Count();
}

//This part is put under a new function
totalShow += 1;
rptItems.SelectTopN = totalShow;
rptItems.DataBind();
lbnLoadMore.Visible = rptItems.Items.Count() < max;

此外,我对如下所示的功能感到困惑:

两者都来自class CMSRepeater,有什么不同?我应该使用哪一个来设置限制?

使用static 成员绝对不是一个好的方法。它们的值将由应用程序的所有用户共享。有更好的方法来存储用户特定的数据:

  • 会话(服务器端)
  • JS(客户端)并通过查询字符串或隐藏字段将它们传递给服务器

关于TopNSelectTopN,他们做同样的事情。可能是因为向后兼容。

从算法的角度来看,不需要多次绑定数据,也不需要多次往返数据库。您只需要用正确的值初始化 datasource/repeater。

我建议您阅读以下文章以获得一些灵感: