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