数据库表附后:
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
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
http://topic.csdn.net/u/20100727/20/6998f485-d40b-4ee3-99ea-e55a943ac43f.html
少一个空格啊,应该写成:
"select 车型代码 from"+" T_cxdm where 车系代码='"+nodeName+"'";
//不妨多加几个空格,好看清,解决完以后,再看看是否有中文的标点符号,
如果没有的话,应该就没有问题了
查询分析器执行
改为:"select 车型代码 from"+" T_cxdm where 车系代码='"+nodeName+"'";
就是说from 与T_cxdm之间要有一个空格的!
改为:"select 车型代码 from"+" T_cxdm where 车系代码='"+nodeName+"'";
就是说from 与T_c……
[/Quote]
哦,我试了,真的是这个问题,终于解决了,我还想追问一下,如果我点击节点,在右边的datagridview里出现了好多数据,那我想通过查询按钮进行二次查询这里面的数据,该怎么绑定查询按钮的查询以对应节点呢。