1

我想DataBindByDefault在我的转发器上设置为 false,否则它会调用 db,该 db 从页面的子节点返回所有数据,达到 12MB。

我现在已经破解了它并将路径值设置为“。” (仅同一页)在前面的代码中,但它仍然是一个额外的数据库调用。

所以我的计划是设置DataBindByDefault为 false,将自定义查询中的数据分配给转发器,然后调用databind()如下:

<cms:CMSRepeater ID="repItems" runat="server" Path="."/>

private void InitRepeater()
{
    var data = (DataSet)NewsProvider.GetNews(ClassNames, Path, MaxRelativeLevel, OrderBy, WhereStatement, SelectTopN, -1, -1);
    if (!DataHelper.DataSourceIsEmpty(data))
    {
        repItems.DataSource = data;
        repItems.ControlContext = ControlContext;
        repItems.EnablePaging = true;
        repItems.PageSize = PageSize;
        repItems.PagerControl.CurrentPage = 1;
        repItems.PagerControl.PageSize = PageSize;
        repItems.PagerControl.Visible = false;
        repItems.HideControlForZeroRows = true;
        repItems.TransformationName = Transformation;
        repItems.DataBind();
    }
}

InitRepeater()被调用 from SetupControl()which 被调用OnContentLoaded()ReloadData()但没有被渲染。

如果我尝试调用InitRepeater()PreRender 它会呈现但它会忽略分页设置。

我正在使用 Kentico v12.0.65

4

1 回答 1

1

您应该使用转发器控件的LoadPagesIndividually属性。如果为 true,则在分页的情况下单独加载每个页面。

于 2021-01-15T06:58:34.647 回答