首页新闻找找看学习计划

请教个treeview无限级的问题。

0
悬赏园豆:100 [已解决问题] 解决于 2016-03-15 16:10

现在有一组List<string>格式数据,暂且命名为A。数据内容如下(不固定数量,而且顺序是乱的):

 

编号0:0区:第0小学:0年级:0班

编号1:0区:第0小学:0年级:1班

编号3:0区:第0小学:0年级:2班

编号0:0区:第0小学:0年级:3班

编号5:0区:第0小学:0年级:4班

编号0:0区:第0小学:0年级:5班

编号2:0区:第0小学:1年级:0班

编号4:0区:第0小学:1年级:0班

...(若干)

编号0:1区:第0小学:1年级:0班

...(若干)

编号5:0区:第0小学:1年级:0班

...(若干)

现在想把绑定到treeview上面,想要的树格式如下图(这图中的绑定是我写死的,我想要根据内容动态生成):

求哪位高手给个思路,,谢谢。。。

翩若游龙的主页 翩若游龙 | 初学一级 | 园豆:22
提问于:2012-11-29 10:50
< >
分享
最佳答案
0

            List<string> strList = new List<string>();
            strList.Add("编号0:0区:第0小学:0年级:0班");
            strList.Add("编号1:0区:第0小学:0年级:1班");
            strList.Add("编号3:0区:第0小学:0年级:2班");
            strList.Add("编号0:0区:第0小学:0年级:3班");
            strList.Add("编号5:0区:第0小学:0年级:4班");
            strList.Add("编号0:0区:第0小学:0年级:5班");
            strList.Add("编号2:0区:第0小学:1年级:0班");
            strList.Add("编号4:0区:第0小学:1年级:0班");

            foreach (string str in strList)
            {
                string[] s = str.Split(':');
                if (!treeView1.Nodes.ContainsKey(s[0]))
                {
                    treeView1.Nodes.Add(s[0],s[0]);
                }
                if (!treeView1.Nodes[s[0]].Nodes.ContainsKey(s[1]))
                {
                    treeView1.Nodes[s[0]].Nodes.Add(s[1], s[1]);
                }
                if (!treeView1.Nodes[s[0]].Nodes[s[1]].Nodes.ContainsKey(s[2]))
                {
                    treeView1.Nodes[s[0]].Nodes[s[1]].Nodes.Add(s[2], s[2]);
                }
                if (!treeView1.Nodes[s[0]].Nodes[s[1]].Nodes[s[2]].Nodes.ContainsKey(s[3]))
                {
                    treeView1.Nodes[s[0]].Nodes[s[1]].Nodes[s[2]].Nodes.Add(s[3], s[3]);
                }
            }

 

 

已测试.完全符合要求

还可以把下面判断与添加node时的代码写到一个方法里面.然后每次传入nodekey就可以了,

可以省点代码.

收获园豆:30
只会造轮子 | 老鸟四级 |园豆:2448 | 2012-11-29 14:19
其他回答(7)
0

每条数据只是字符串的话先解析字符串:

public class Model

{

public int ID{get;set;}

public int Area{get;set;}

public int School{get;set;}

public int Grade{get;set;}

public int Sclass{get;set;}

}

将解析好的 字符串放到 List<Model> 中

对这个泛型进行 操作排序

收获园豆:15
天真浪浪 | 园豆:950 (小虾三级) | 2012-11-29 10:59
0

主要看你的数据库数据的定义,只要符合treeview的结构,就可以无限

收获园豆:10
chenping2008 | 园豆:9836 (大侠五级) | 2012-11-29 11:22
0

主要的工作是解析字符串,然后定义数据结构,这是两个步骤,然后将解析的数据加入到定义好的数据结构中,最后将其绑定到treeview控件上去

收获园豆:10
az235 | 园豆:8283 (大侠五级) | 2012-11-29 12:08
0

用ArrayList  最底层的list存班级,然后上一级list存年级,然后小学,区编号。

就这样嵌套应该可以做到无限添加吧。

如果麻烦的话,班级就数组[100]就撑死了,年级小学最多就6年,也用数组[10],

小学- -。一个区什么概念华北地区?那就用list吧。

存的内容用substring()取到。

收获园豆:15
CNHONKER07 | 园豆:217 (菜鸟二级) | 2012-11-29 12:31
0

给你推荐个地址,上面有绑定的例子:http://www.cnblogs.com/duhongyu216/articles/1702591.html

收获园豆:5
KivenRo | 园豆:1722 (小虾三级) | 2012-11-29 14:32
0

数据库

ID 自动编号

PID上级ID

Name 编号/区/班级
--------------------------

绑定=查询pid=0的

再根据onchange 传入的id查询

收获园豆:10
王大湿 | 园豆:457 (菜鸟二级) | 2012-11-29 22:47
0

搞个树结构拉,结合递归。

收获园豆:5
terry59599s | 园豆:202 (菜鸟二级) | 2012-11-29 22:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册