最近老是要用到显示多列的树型结构,而treeview只能显示单列,gridview又不能显示树型的结构,所以打算自己做个控件来解决这个问题,暂时取名叫:TreeListView。先说下我的思路,园内的朋友如果有更好的思路或想法,请反馈。
\n
1.由于是多列,存在上下对齐问题,所以我用table呈现。
\n
2.如何记录树形的结构关系?
给每行的tr加个属性 id 和childids ,id 是唯一的,childids记录他的子节点的id,多个id用“,”隔开。 (<tr id=”1″ depth=”1″ childids=”2,3″ >)
\n
主要就这2点,具体怎么写就比较简单了,我就不说了,先上图
\n
\n
上面就是我的实现效果(下载演示)
\n
现在只实现个显示功能,事件啥的都没实现,半成品都不到,所以没提供代码,你可以通过Reflector.exe查看或者留下你的mail。
\n
如果让控件又好用有灵活,这个问题真是比较头痛,想来想去最后就做成这个样子了。
\n
虽然只做了一点点,还是发出来了,希望各位提供反馈意见,以便下个版本做的更好。
\n
—————————
\n
如何使用:
\n
后台:
\n
Employee e1 = new Employee(“Nancy”, “Davalio”);
Employee e2 = new Employee(“Andrew”, “Fuller”);
Employee e3 = new Employee(“Huang”, “Hurry”);
Employee e4 = new Employee(“Jin”, “Faster”);
TreeListNode root = new TreeListNode();
root.Text = “root”;
root.DataSource = e1;
TreeListNode node = new TreeListNode();
node.Text = “node1″;
node.DataSource = e2;
TreeListNode node12 = new TreeListNode();
node12.Text = “node12″;
node12.DataSource = e3;
TreeListNode node2 = new TreeListNode();
node2.Text = “node2″;
node2.DataSource = e4;
node.ChildNodes.Add(node12);
root.ChildNodes.Add(node);
root.ChildNodes.Add(node2);
this.TreeListView1.DataSource = root;
this.TreeListView1.DataBind();\n
Employee e2 = new Employee(“Andrew”, “Fuller”);
Employee e3 = new Employee(“Huang”, “Hurry”);
Employee e4 = new Employee(“Jin”, “Faster”);
TreeListNode root = new TreeListNode();
root.Text = “root”;
root.DataSource = e1;
TreeListNode node = new TreeListNode();
node.Text = “node1″;
node.DataSource = e2;
TreeListNode node12 = new TreeListNode();
node12.Text = “node12″;
node12.DataSource = e3;
TreeListNode node2 = new TreeListNode();
node2.Text = “node2″;
node2.DataSource = e4;
node.ChildNodes.Add(node12);
root.ChildNodes.Add(node);
root.ChildNodes.Add(node2);
this.TreeListView1.DataSource = root;
this.TreeListView1.DataBind();\n