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

[复制链接]
查看11 | 回复1 | 2011-4-19 10:43:08 | 显示全部楼层 |阅读模式
我想要在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的话,会报错说是没意义。
我要怎样修改才能正常显示三层数据呢?
请大家帮帮忙,谢谢!

回复

使用道具 举报

千问 | 2011-4-19 10:43:08 | 显示全部楼层
我来解释一下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 就是树根下的所有节点,那么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行