C# 关于treeview中显示三层数据的问题!

我想要在treeview里显示客户名+合同号+ID号,这三层结构,两层显示是没问题了,但是就在第三层显示出错了,代码如下:stringConnectString="Dat... 我想要在treeview里显示 客户名 + 合同号+ID号,这三层结构,两层显示是没问题了,但是就在第三层显示出错了,代码如下:
string ConnectString = "Data Source=local;Initial Catalog=yifn;Integrated Security=True";//数据库连接字符串

SqlConnection cnn = new SqlConnection(ConnectString);
cnn.Open();
SqlCommand myCmd = new SqlCommand();
myCmd.CommandText = "select DISTINCT CustomerName from SaleContractDetail";
myCmd.Connection = cnn;
SqlDataReader myReader = myCmd.ExecuteReader();
while (myReader.Read())
{
TreeNode tt = new TreeNode();
tt.Text = myReader.GetString(0);
treeView1.Nodes.Add(tt.Text);
SqlConnection cn = new SqlConnection(ConnectString);
cn.Open();
SqlCommand mycmd = new SqlCommand();
mycmd.CommandText = "select DISTINCT SaleContractID from SaleContractDetail where CustomerName=@CustomerName";
mycmd.Connection = cn;
mycmd.Parameters.Add("@CustomerName", SqlDbType.Char, 15).Value = tt.Text;
SqlDataReader myDr = mycmd.ExecuteReader();
while (myDr.Read())
{
TreeNode ss = new TreeNode();
ss.Text = myDr.GetString(0);
int i = treeView1.Nodes.Count;
treeView1.Nodes[i - 1].Nodes.Add(ss.Text);
SqlConnection cn1 = new SqlConnection(ConnectString);
cn1.Open();
SqlCommand mycmd1 = new SqlCommand();
mycmd1.CommandText = "select DISTINCT SaleContractDetailID from SaleContractDetail where SaleContractID=@SaleContractID";
mycmd1.Connection = cn1;
mycmd1.Parameters.Add("@SaleContractID", SqlDbType.Char, 15).Value = ss.Text;
SqlDataReader myDr1 = mycmd1.ExecuteReader();
while (myDr1.Read())
{
TreeNode yy = new TreeNode();
yy.Text = myDr1.GetString(0);
int q = treeView1.Nodes.Count; ;
treeView1.Nodes[q - 1].Nodes.Add(yy.Text);
}
myDr1.Close();
}
myDr.Close();
}
测试的时候,问题就出在最后一层的数据加载上:
while (myDr1.Read())
{
TreeNode yy = new TreeNode();
yy.Text = myDr1.GetString(0);
int q = treeView1.Nodes.Count; ;
treeView1.Nodes[q - 1].Nodes.Add(yy.Text);
}
我不懂怎么去处理 int q = treeView1.Nodes.Count; ,如果用q-1的话,那么本来英国出现在第三层上的数据都会出现在第二层了。
如果把q换成i的话,会报错说是没意义。

我要怎样修改才能正常显示三层数据呢?
请大家帮帮忙,谢谢!
展开
 我来答
春来喜人新春5
2011-04-19
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
我来解释一下
while (myDr1.Read())
{
TreeNode yy = new TreeNode();
yy.Text = myDr1.GetString(0);
int q = treeView1.Nodes.Count; ;
treeView1.Nodes[q - 1].Nodes.Add(yy.Text);
}
最后一句,treeView1.Nodes[q - 1].Nodes.Add(yy.Text);中,
treeView1 就是当前的树控件
treeView1.Nodes 就是树根下的所有节点,
那么treeView1.Nodes[q - 1]就是树根下的困让迟汪李第q个节点,也就是说是第q个客户名
那么treeView1.Nodes[q - 1].Nodes就是第q个客户的所有合同号,此时你把yy.Text加进去,不就是把id号加到合同号里边去了么?
所以treeView1.Nodes[q - 1].Nodes.Add(yy.Text);是不会将id号加到第三层的。
正确的应该是类似以下:
treeView1.Nodes[q - 1].Nodes[m - 1].Nodes.Add(yy.Text);
第滑薯一个Nodes是所有客户名,第二个Nodes是第q个客户的所有合同号,第三个Nodes是第q个客户第m个合同号的所有id号。
不知描述是否清楚?
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式