日期:2014-05-17  浏览次数:20870 次

分层级的代号如何用Treeview树化
比如,内存表dt中的数据内容及格式是:
序号    级别   代号
1       .1     CS001
2      ..2    CSA01
3      ..2    CSB01
4      ...3   CSBA1
5      ...3   CSBB2
6      ....4  CSBBA
7      ...3   CSBD1
8      ..2    CSD02
9      ...3   CSDA1
10     .1     CS010
说明:CSA01 是 CS001 的下级代号,CSB01 与 CSA01 是同级代号,CSBA1 是 CSB01 的下级代号,其他类推。
如此分级别的代号,怎么将这个内存表dt在Treeview中树化起来?
不胜感激……

------解决方案--------------------
递归绑定就可以了。但你dt里面的结构少了一项就是“上级序号(或id)”,假如表中的话可以直接读出。如没有的话感觉这样设计有点蛋疼了。
------解决方案--------------------
http://www.cnblogs.com/SunYu/archive/2010/04/29/1724367.html
------解决方案--------------------
只要你能解释为什么CSA01是CS001的下级代号而不是CS010的下级,那么这个问题就很简单了。
你要做的无非就是把你的解释写成代码罢了。你就可以遍历,搜索,查找上下级关系。

当然,之所以那么繁琐,是因为你的数据结构很蛋疼。
------解决方案--------------------
引用:
恩,具体怎么来操作呢?我对这个树化不是那么精通


写一个给你:
在界面上放一个TreeView,双击窗体空白处,在Form_Load编写如下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var data = ("0 0 0\r\n" +
@"1       .1     CS001
2      ..2    CSA01
3      ..2    CSB01
4      ...3   CSBA1
5      ...3   CSBB2
6      ....4  CSBBA
7      ...3   CSBD1
8      ..2    CSD02
9      ...3   CSDA1
10     .1     CS010").Split(new string[] { "\r\n" }, StringSplitOptions.None)
                    .Select(x => x.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))