XML and Telerik RadTreeview - HierarchicalDataTemplate
本文关键字:HierarchicalDataTemplate RadTreeview Telerik and XML | 更新日期: 2023-09-27 18:33:17
我正在为客户处理一个项目,我正在构建的应用程序将用于编辑实时应用程序使用的XML文件。该应用程序是用Flash编写的,并且非常不稳定,因此我有点坚持使用不太理想的XML设置。
XML 由(简化(如下组成:
<MenuItem id="1" label="category1">
<Description>Description for Category 1</Description>
<Image>Image for category 1</Image>
<Item label ="Category1Item1">
<Price>12.99</Price>
<Type>Wood</Type>
<additionalElementsHere />
</Item>
<Item label ="Category1Item2">
<Price>112.99</Price>
<Type>Stone</Type>
<additionalElementsHere />
</Item>
<AdditionalItemsHere />
</MenuItem>
<AdditionMenuITemsHere />
我一直在使用绑定到 XMLDataSource 的 Telerik 树视图来显示数据并允许用户与之交互(添加/删除节点、通过拖放移动节点或复制节点和底层元素(。目前为止,一切都好。
现在我的客户想知道是否可以以某种方式将 Item 元素的元素用作分组容器。
所以目前的树视图如下所示:
category1
--Category1Item1
--Category1Item2
理想情况下,它最终应该看起来像这样:
category1
--Wood
----Category1Item1
----Category1Item123
--Stone
----Category1Item2
----Category1Item456
我阅读了 HierarchicalDataTemnplates,但还没有设法弄清楚这些是否适用于 Telerik 提供的 ASP.NET 控件。我想尝试并坚持我目前所拥有的,因为到目前为止,该产品已经投入了大量时间。
如果有人能指出我如何解决这个特定问题的正确方向,我将不胜感激。
提前致谢:)
彼得
Telerik 的团队提供了以下解决方案来打乱局面:
protected void treeViewRearrange(RadTreeView tvw) {
foreach (RadTreeNode menuItem in tvw.Nodes) {
List<RadTreeNode> itemTypes = new List<RadTreeNode>();
foreach (RadTreeNode item in menuItem.Nodes) {
foreach (RadTreeNode typeElement in item.Nodes) {
var type = itemTypes.FirstOrDefault(x => x.Text == typeElement.Text);
if (type == null) {
type = new RadTreeNode(typeElement.Text);
itemTypes.Add(type);
}
RadTreeNode copyOfitem = item.Clone();
// Hide all existing sub types
for (int i = 0; i < copyOfitem.Nodes.Count; i++) {
copyOfitem.Nodes[i].Visible = false;
}
type.Nodes.Add(copyOfitem);
}
}
menuItem.Nodes.Clear();
menuItem.Nodes.AddRange(itemTypes);
tvw.ExpandAllNodes();
}
}