微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kentico CmsRepeater:DataBindByDefault="false"

如何解决Kentico CmsRepeater:DataBindByDefault="false"

我想在我的转发器上将 DataBindByDefault 设置为 false,否则它会调用数据库,该数据库返回来自页面的子节点的所有数据,大小为 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() 是从 SetupControl() 调用的,后者从 OnContentLoaded()ReloadData() 调用,但没有渲染。

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

我使用的是 Kentico v12.0.65

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。