Kentico 如何设置';文档ShowInsiteMap';肯蒂科的地产?

Kentico 如何设置';文档ShowInsiteMap';肯蒂科的地产?,kentico,Kentico,如何在Kentico中设置DocumentShowInSiteMap属性的值 我试过: 使用DocumentHelper和TreeHelperAPI,但同时使用这两种API,此属性不允许您访问setter 尝试运行SQL查询,将dbo.CMS\u Document.documentshowinstemap的值设置为1和0。这些查询运行正常,但当我转到pages应用程序时,“在sitemap中显示”属性复选框中没有任何更改,即,将数据库字段设置为0不会“取消选中”此复选框 我正在尝试运行计划任务,

如何在Kentico中设置
DocumentShowInSiteMap
属性的值

我试过:

  • 使用
    DocumentHelper
    TreeHelper
    API,但同时使用这两种API,此属性不允许您访问setter
  • 尝试运行SQL查询,将
    dbo.CMS\u Document.documentshowinstemap
    的值设置为
    1
    0
    。这些查询运行正常,但当我转到pages应用程序时,“在sitemap中显示”属性复选框中没有任何更改,即,将数据库字段设置为0不会“取消选中”此复选框

  • 我正在尝试运行计划任务,该任务将自动为指定位置的文档设置此属性。正确的方法是什么?谢谢你的帮助

    在代码中,没有简单的方法。Setter应在特殊类DocumentCultureDaInfo中可用,并应与SetObject一起保存。此类包含所有区域性数据库字段,由DocumentCultureDainFoProvider操作

    此类是TreeNode的内部属性。但是,我没有尝试在任意代码中执行此操作,并且提到的类是InnnerAPI的一部分

    您的第二种方法应该可以工作,但是文档及其属性是缓存的,您需要刷新缓存,以便实际获取新的DB值。对于每个树节点,此属性的加载通过LoadDefaultValues中的简单GetData进行

    你试过这个吗

    int TheDocumentToModify = 1221;
            var PageItem = DocumentHelper.GetDocument(TheDocumentToModify , new TreeProvider());
    
            foreach(var culturePage in PageItem.CultureVersions)
            {
                culturePage.SetValue("DocumentShowInSiteMap", true);
                // May need to apply Workflow check in / check out, see Kentico API examples based on your need.
                culturePage.Update();
            }
    
    奥巴马的答案可能会奏效。我昨天就想出来了,把我的解决方案留在这里以防万一:

    TreeHelper
    .GetDocuments(task.CurrentSiteName, aliaspath, null, false, "", "", "", -1, false, -1)
    .Where(doc => doc.DocumentShowInSiteMap)
    .ToList()
    .ForEach(node =>
    {
        node.SetValue("DocumentShowInSiteMap", false);
        node.Update();
    });
    

    显然,将
    aliaspath
    替换为您需要的路径,或者使用
    DocumentHelper.GetDocuments
    来获取不同的参数。

    我也是这么想的。我尝试清除所有缓存值。从页面和系统两个方面。我也尝试重新启动应用程序,但它只是获取了该值。我强烈建议不要使用直接数据库查询@jeevan。这是因为版本控制和工作流。您可以整天修改该表,但当它保存在UI中时,由于版本控制和工作流,它将覆盖该表。