现在有一组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上面,想要的树格式如下图(这图中的绑定是我写死的,我想要根据内容动态生成):
求哪位高手给个思路,,谢谢。。。
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就可以了,
可以省点代码.
主要看你的数据库数据的定义,只要符合treeview的结构,就可以无限
主要的工作是解析字符串,然后定义数据结构,这是两个步骤,然后将解析的数据加入到定义好的数据结构中,最后将其绑定到treeview控件上去
用ArrayList 最底层的list存班级,然后上一级list存年级,然后小学,区编号。
就这样嵌套应该可以做到无限添加吧。
如果麻烦的话,班级就数组[100]就撑死了,年级小学最多就6年,也用数组[10],
小学- -。一个区什么概念华北地区?那就用list吧。
存的内容用substring()取到。
数据库
ID 自动编号
PID上级ID
Name 编号/区/班级
--------------------------
绑定=查询pid=0的
再根据onchange 传入的id查询
搞个树结构拉,结合递归。