【发布时间】:2014-01-30 09:22:03
【问题描述】:
在 Sitecore Treelist 控件中,我只想获取列出的元素,这些元素具有该语言的版本。
我进行了搜索,发现有用于包含/排除项目/模板的参数。但我不能给出像 Versions.Count > 0
这样的条件有没有办法通过将参数传递给模板的数据源字段来做到这一点?
或者我需要覆盖树列表控件吗?
感谢
【问题讨论】:
-
您不能开箱即用地执行此操作,因此您需要编写自定义 TreeList。如果不存在版本,您可以覆盖方法 Add() 并生成警报。但是你为什么要这样做呢?如果有人删除了您的字段中引用的某个项目的版本,它会保持引用状态,并且您的树形列表数据会“无效”。为什么在查询演示文稿的树列表字段中的所有项目时不检查有效版本?
-
要求是没有版本的项目不应该显示在列表中(我的意思是treelist控件的左侧列表)顺便说一句,你的意思是覆盖Sitecore.Shell中的方法Add。 Applications.ContentEditor.TreeList 类?那么,我应该在哪个配置文件中引用我的新 CustomTreeList 类?
-
@EngelbertCoder 此链接将帮助您开始创建自定义字段类型sdn.sitecore.net/Articles/API/…
-
请看@TwentyGotoTen 的回答。
Add()方法在作者想要将广告项添加到他的列表时调用。这并不完全符合您的要求,因为仍然显示所有项目。为了满足您的要求,我认为您需要覆盖TreeList的呈现。看看OnLoad()方法,有一个dataContext.Filter属性接受Sitecore 查询。如果您可以进行查询以过滤您的项目,那么这就是方法。否则我认为您还必须覆盖TreeviewExWebControl(用于TreeList的OnLoad())。 -
John West 也有一些优秀的博客文章解释了如何创建自定义 TreeList,例如:sitecore.net/unitedkingdom/community/technical-blogs/…