我把现有的数据存放到两个DataTable表里(如下),表名:CarTable
Num  CarID GroupID   CarNum   CarMotorman
 1     1      1     京A3352      张三
 2     3      1     京B4321      李四
 3     4      3     京C7680      王五
 4     5      1     京F3360      李六表名: GroupTable
Num   GroupID   GroupName
 1      1       车辆一组
 2      3       车辆三组我想把这些表里的数据按照车辆组来分类,显示在一个
TreeView里,如何显示。请各位师哥代码明示。我想显示的格式如下:车辆一组
    京A3352
    京B4321
    京F3360
车辆二组
    京C7680小妹刚刚入门请多多指教!

解决方案 »

  1.   

    DataFactory temp;
                try
                {
                    temp = new DataFactory("AlarmSystem");
                    this.areaTable = temp.FetchTable("TArea");
                }
                catch (DbException)
                {                
                    //初始化失败,请检查数据源是否正常工作
                    throw;
                }            //根节点,只能有一个根节点,即只有一笔记录的ParentAreaID为0
                TreeNode rootNode = new TreeNode();            if (this.areaTable.Rows.Count == 0) // 表为空,就创建一个根节点
                {
                    //创建根节点,设置其ParentAreaID为0,更新到数据库中
                    rootNode = new TreeNode("Default root");
                    rootNode.Name = "-1";
                    rootNode.Tag = new AreaExtensionInfo(0, "");                DataTable newTable = this.areaTable.Clone();
                    DataRow newRow = newTable.NewRow();
                    newTable.Columns.Remove("AreaID");                
                    newRow["AreaName"] = rootNode.Text;
                    newRow["ParentAreaID"] = 0;
                    newTable.Rows.Add(newRow);
                    newTable.PrimaryKey = new DataColumn[] { };
                    //可能有bug
                                    
                    try
                    {
                        temp = new DataFactory("AlarmSystem");
                        ArrayList list = temp.UpdateData("ProcInsertTArea", this.areaColumnName, newTable, true);                    this.rootNodeAreaId = Convert.ToInt32(list[0]);
                        rootNode.Name = list[0].ToString();
                    }
                    catch (DbException)
                    {
                        throw;
                    }
                }
                else
                {
                    // 根据存储在数据库中用户设置的根节点信息创建根节点
                    DataView rootRow = new DataView(this.areaTable);
                    rootRow.RowFilter = "ParentAreaID = 0";
                    // 唯一的根节点存在
                    if (rootRow.Count == 1)
                    {
                        foreach (DataRowView row in rootRow)
                        {
                            rootNode.Name = row["AreaID"].ToString();
                            this.rootNodeAreaId = Convert.ToInt32(row["AreaID"]);
                            rootNode.Text = row["AreaName"].ToString();
                            rootNode.Tag = new AreaExtensionInfo(row["ParentAreaID"], row["Description"]);
                        }
                    }
                    else
                    {
                        // 数据库信息错误
                        throw new DBRecordException("DataTable TArea record error");
                    }
                }            treeViewArea.Nodes.Add(rootNode);
                BuildTree(rootNode);
                rootNode.Expand();
                // 把属于当前Node中的Tag加入到ListView中            
                ShowAlarmTagInListView(rootNode);
    我也是从数据库生成tree
    这种是有根节点的
      

  2.   

    foreach(datarow group in GroupTable.rows)
    {
    treenode groupnode=new treenode();
    groupnod.text=group["groupname"];
    treeview.nods.add(groupnode);datarow[] cars= CarTable.filter="GroupID   ="+group["GroupID"];
    foreach(datarow car in cars)
    {
    treenode carnode=new treenode();
    carnode.text=car["CarNum"];
    groupnode.nods.add(carnode);
    }}
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  3.   

    datarow[] cars= CarTable.filter="GroupID   ="+group["GroupID"];
    改为
    datarow[] cars= CarTable.select("GroupID   ="+group["GroupID"]);
      

  4.   

    /// <summary>
            /// Form初始化
            /// </summary>
            private void FCArea_Load(object sender, EventArgs e)
            {
                try
                {
                    FormatGridMultilanguage();
                    BaseNode = new TreeNode();
                    BaseNode.Text = ResourceFactory.GetMultilanguage("AREA");
                    BaseNode.Name = "0";
                    treeView1.Nodes.Add(BaseNode);
                    ErmsDB ermsdb = new ErmsDB("ConnectionAlarm");
                    dtSite = ermsdb.FetchTable("TArea");
                    dtnew = ermsdb.FetchTableFrame("TArea");
                    dtnew.Rows.Add();
                    if (dtSite.Rows.Count > 0)
                    {
                        AddTree(int.Parse(BaseNode.Name), BaseNode);
                        txtAreaID.Text = "0 ";
                        txtAreaName.Text = ResourceFactory.GetMultilanguage("AREA");
                        txtAreaDes.Text = "";
                        txtPAreaID.Text = "";
                        this.btnSave.Enabled = false;
                        this.ckBoxFix.Enabled = false;
                        this.dtpFixStartTime.Enabled = false;
                        this.dtpFixEndTime.Enabled = false;
                    }
                    this.addCToolStripMenuItem.Enabled = true;
                    this.updateToolStripMenuItem.Enabled = true;
                    this.removeToolStripMenuItem.Enabled = true;            }
                catch (Exception ex)
                {
                    new Exception(ex.Message);                LogEntry logDb = new LogEntry();
                    Dictionary<string, object> errorInfo = new Dictionary<string, object>();
                    errorInfo.Add("DateTime", DateTime.Now);
                    errorInfo.Add("Exception Message", ex.Message);
                    errorInfo.Add("Operation", this.Text + ResourceFactory.GetMultilanguage("ERRORINITIAL"));
                    logDb.ExtendedProperties = errorInfo;
                    logDb.Categories.Add("Error");
                    Logger.Write(logDb);
                    blnInitialSuccess = false;
                }
            }        /// <summary>
            /// 递归添加树结点
            /// </summary>
            public void AddTree(int ParentID, TreeNode pNode)
            {
                try
                {
                    TreeNode tn1 = new TreeNode();
                    ErmsDB ermsdb = new ErmsDB("ConnectionAlarm");
                    dtSite = ermsdb.FetchTable("TArea");
                    DataView dv = new DataView(dtSite);
                    dv.RowFilter = "[ParentAreaID] = " + ParentID;
                    foreach (DataRowView Row in dv)
                    {
                        if (pNode == null)
                        {
                            tn1.Text = Row["AreaName"].ToString();
                            tn1.Name = Row["AreaID"].ToString();
                            treeView1.Nodes.Add(tn1);
                            AddTree(Int32.Parse(Row["AreaID"].ToString()), tn1);
                        }
                        else
                        {
                            TreeNode tn2 = new TreeNode();
                            tn2.Text = Row["AreaName"].ToString();
                            tn2.Name = Row["AreaID"].ToString();
                            pNode.Nodes.Add(tn2);
                            AddTree(Int32.Parse(Row["AreaID"].ToString()), tn2);
                        }
                    }
                }这种是直接调用递归算法加载tree
    wo说明一下 AreaID 关联 ParentAreaID
    他们是父子关系
    你参考一下
    下班了,你自己改改
      

  5.   

    如果这段代码有什么不懂的,你直接发邮件问,[email protected]
      

  6.   


    for(int i=0;i<GroupTable.Rows.count;i++)
    {
     string int_num= GroupTable.Rows[i]["GroupID"].ToString()
     TreeNode tn = new TreeNode(GroupTable.Rows[i]["GroupName"].ToString());
     TreeView1.nodes.add(tn);
     for(int j=0;j<CarTable.Rows.count;j++)
     {
      if(int_num==CarTable.Rows[j]["GroupID"].tostring())
      {
        TreeNode temp_tn = new TreeNode(CarTable.Rows[j]["CarNum"].ToString());
        TreeView1.nodes.add(tn);
        TreeView1.nodes[i].nodes.add(temp_tn);
      }
     }
    }
      

  7.   

    最好用datalist衔套绑定就可
    不用写大量代码
      

  8.   

    To:leixueqiyi() 没明白!你的很多方法都是自己写的,我弄不明白里面的流程。