数据库表附后:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data .SqlClient;namespace 信息查询
{
    public partial class 多窗体 : Form
    {
       SqlDataAdapter MyDataAdapter;
       
        public 多窗体()
        {
            InitializeComponent();
        }        private void StructRootNode()
        {   string sql ="select * from T_cx";
            MyDataAdapter = new SqlDataAdapter(sql,DBHelper.connection);(这个DBHelper是数据库连接的类)
            MyDataAdapter.SelectCommand.CommandText =sql;
            DataSet departmentSet = new DataSet();
            int n = MyDataAdapter.Fill(departmentSet,"T_cx");
            string nodeText;
            DataSet carset = new DataSet();
            for (int i = 0; i < n; i++ )
            {
                nodeText=departmentSet.Tables["T_cx"].Rows[i]["车系代码"].ToString();
                TreeNode node = new TreeNode(nodeText,0,1);
                node.Tag = "车系节点";
                treeView2.Nodes.Add(node);
                MyDataAdapter.SelectCommand.CommandText = "select * from T_cxdm"+"where 车系代码='"+nodeText+"'";
                carset.Clear();
                MyDataAdapter.Fill(carset,"T_cxdm");(这里报错,说第一行‘=’附近有错误,但是我找不到)
                if (carset.Tables ["T_cxdm"].Rows .Count !=0)
                {
                    node.Nodes.Add(new TreeNode (""));
                }            }
        }        private void treeView2_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            string nodeText1;
            string nodeText2;
            string nodeType = e.Node.Tag.ToString();
            string nodeName = e.Node.Text;
            DataSet carset = new DataSet();
            DataSet equipmentset = new DataSet();
            int n;
            switch (nodeType) 
            {
                case "车系节点":
                    MyDataAdapter.SelectCommand.CommandText = "select 车型代码 from"+"T_cxdm where 车系代码='"+nodeName+"'";
                    carset.Clear();
                    n = MyDataAdapter.Fill(carset ,"T_cxdm");
                    e.Node.Nodes.Clear();
                    for (int i = 0; i < n;i++ )
                    {
                        nodeText1 = carset.Tables["T_cxdm"].Rows[i]["车型代码"].ToString();
                        TreeNode node = new TreeNode(nodeText1,0,1);
                        node.Tag = "车型节点";
                        e.Node.Nodes.Add(node);
                        MyDataAdapter.SelectCommand.CommandText = "select * from"+"T_qicml where 车型代码='"+node.Text +"'";
                        equipmentset.Clear();
                        MyDataAdapter.Fill(equipmentset ,"T_qicml");
                        if (equipmentset .Tables ["T_qicml"].Rows .Count!=0)
                        {
                            node.Nodes.Add(new TreeNode (""));
                        }
                    }
                    break;
                case "车型节点":
                    MyDataAdapter.SelectCommand.CommandText = "select 器材编码 from "+"T_qicml where 车型代码='"+nodeName+"'";
                    equipmentset.Clear();
                    n = MyDataAdapter.Fill(equipmentset ,"T_qicml");
                    e.Node.Nodes.Clear();
                    for (int i = 0; i < n; i ++ )
                    {
                        nodeText2 = equipmentset.Tables["T_qicml"].Rows[i]["器材编码"].ToString();
                        TreeNode node = new TreeNode(nodeText2,0,1);
                        node.Tag = "器材编码节点";
                        e.Node.Nodes.Add(node);
                    }
                    break;                   
            }        }        private void 多窗体_Load(object sender, EventArgs e)
        {
           
            StructRootNode();
        }    }
}
 T_cx             车系代码    车系名称  id
                1521            解放   1
                1522           东风    2
                1531           陕汽    3 
T_qcdm             车型代码    车型名称        车系代码    id
                   152101        解放1090       1521         1
                   152110        解放1122        1521         2
                   152212      东风1181         1522         3
                   152201       东风1090          1522       4
                   153131        延安2190          1531       5
 
T_qicml                  器材编码                    器材名称     车型代码          id(举一个例子)
                       152101010100                  发动机       152101               1

解决方案 »

  1.   

    递归绑定
    http://topic.csdn.net/u/20100727/20/6998f485-d40b-4ee3-99ea-e55a943ac43f.html
      

  2.   

    我就是想点击左边的Treeview,相应的把数据库的值放到右边的datagridview,问题我现在一启动调试,就在这里MyDataAdapter.Fill(carset,"T_cxdm");(这里报错,说第一行‘=’附近有错误,但是我找不到)
      

  3.   

    这个是贴到WORD的原因,在程序上没有错,帮我看看我这样的写法,思路是否正确
      

  4.   

    "select 车型代码 from"+"T_cxdm where 车系代码='"+nodeName+"'";
    少一个空格啊,应该写成:
    "select 车型代码 from"+" T_cxdm where 车系代码='"+nodeName+"'";
    //不妨多加几个空格,好看清,解决完以后,再看看是否有中文的标点符号,
    如果没有的话,应该就没有问题了
      

  5.   

    MyDataAdapter.SelectCommand.CommandText = "select * from T_cxdm where 车系代码='"+nodeText+"'";
    查询分析器执行
      

  6.   

    我在数据库的查询分析里执行了这条语句,能出现1521 1522 1531 ,   而且vistduo在调试的时候 这里也显示节点是1521,就因为那里错了  其他两个结点无法循环 ,显示不了
      

  7.   

    你有没有把"select 车型代码 from"+"T_cxdm where 车系代码='"+nodeName+"'";
    改为:"select 车型代码 from"+"  T_cxdm where 车系代码='"+nodeName+"'";
    就是说from 与T_cxdm之间要有一个空格的!
      

  8.   

    你有没有把"select 车型代码 from"+"T_cxdm where 车系代码='"+nodeName+"'";
    改为:"select 车型代码 from"+" T_cxdm where 车系代码='"+nodeName+"'";
    就是说from 与T_c……
    [/Quote]
    哦,我试了,真的是这个问题,终于解决了,我还想追问一下,如果我点击节点,在右边的datagridview里出现了好多数据,那我想通过查询按钮进行二次查询这里面的数据,该怎么绑定查询按钮的查询以对应节点呢。