首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML和Telerik RadTreeview - HierarchicalDataTemplate

XML和Telerik RadTreeview - HierarchicalDataTemplate
EN

Stack Overflow用户
提问于 2012-05-07 02:17:31
回答 1查看 1.2K关注 0票数 0

我正在为一个客户做一个项目,在这个项目中,我正在构建的应用程序将用于编辑活动应用程序使用的XML文件。这个应用程序是用Flash编写的,而且非常不稳定,所以我有点卡在了不太理想的XML设置上。

XML的结构(简化)如下:

代码语言:javascript
复制
<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 treeview来显示数据并允许用户与其交互(添加/删除节点,通过拖放的方式移动节点,或者复制节点和底层元素)。到现在为止还好。

现在,我的客户想知道是否可以使用Item元素的元素作为分组容器。

因此,当前的树视图如下所示:

代码语言:javascript
复制
category1
--Category1Item1
--Category1Item2

理想情况下,它应该看起来像这样:

代码语言:javascript
复制
category1
--Wood
----Category1Item1
----Category1Item123
--Stone
----Category1Item2
----Category1Item456

我在HierarchicalDataTemnplates上读过,但还没有弄清楚这些控件在Telerik提供的ASP.NET控件中是否有效。我想尝试并坚持我到目前为止所拥有的东西,因为到目前为止,产品已经投入了很多小时的工作。

如果有人能为我指出如何解决这个特殊问题的正确方向,我将不胜感激。

提前感谢:)

彼得

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-15 02:17:25

Telerik的团队提供了以下解决方案来解决问题:

代码语言:javascript
复制
        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();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10472988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档