我想实现以下一个功能:
数据库中有个表,里边有2个字段分别为:FileName(varchar),Document(varchar).
一个FileName对应一个或多个Document,我想在树下显示FileName,然后在FileName下边显示
FileName对应的那一个或多哥Document.
这要怎么实现?
下边是把FileName显示在树下的实现代码,下一步如何把Document以对应的FileName的子节
点显示下面呢?
private void frmTreeView_Load(object sender, EventArgs e)
{
string sqlConn = "data source=.;database=bfbc;uid=sa;pwd=sa";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(sqlConn);
conn.Open();
string selectSql = "select FileName,VehicleConfigureDocument from DemarcateRelatingDocument";
DataTable dt=new DataTable("DemarcateRelatingDocument");
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(selectSql, sqlConn);
int fillNum = 0;
fillNum=da.Fill(dt);
for (int i = 0; i < fillNum; i++)
{
this.treeView1.Nodes.Add(dt.Rows[i][0].ToString());
}
conn.Close();
}
帅哥美女们帮帮小弟,小弟在次先谢谢了.
数据库中有个表,里边有2个字段分别为:FileName(varchar),Document(varchar).
一个FileName对应一个或多个Document,我想在树下显示FileName,然后在FileName下边显示
FileName对应的那一个或多哥Document.
这要怎么实现?
下边是把FileName显示在树下的实现代码,下一步如何把Document以对应的FileName的子节
点显示下面呢?
private void frmTreeView_Load(object sender, EventArgs e)
{
string sqlConn = "data source=.;database=bfbc;uid=sa;pwd=sa";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(sqlConn);
conn.Open();
string selectSql = "select FileName,VehicleConfigureDocument from DemarcateRelatingDocument";
DataTable dt=new DataTable("DemarcateRelatingDocument");
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(selectSql, sqlConn);
int fillNum = 0;
fillNum=da.Fill(dt);
for (int i = 0; i < fillNum; i++)
{
this.treeView1.Nodes.Add(dt.Rows[i][0].ToString());
}
conn.Close();
}
帅哥美女们帮帮小弟,小弟在次先谢谢了.
假如取回来的数据是
FileName Document
root1 node1 1
root1 node2 2
roor2 node3 3
root1 root4 4一行行读嘛,
1来了,什么都没有,那就是
root1
|
-- node1
2来了,root1已经存在
root1
|
-- node1
|
-- node2
3来了,root2不存在
root1
|
-- node1
|
-- node2
root2
|
-- node3
4来了,root2已经存在
root1
|
-- node1
|
-- node2
root2
|
-- node3
|
-- node4
那现在问题是不是就简单了?
|
--
取到那FileName和Document没有问题,关键是我怎么把Document加到FileName节点的下边?
楼上的哥们能不能详细点?
我想实现的效果是这样的:
FileName1
...Document1
...Document2
FileName2
...Document3
...Document4
...Document5
FileName3
...Document6
FileName4
...Document7
就是这个意思,这样就有思路,1来了什么都没有,那我this.treeView1.Nodes.Add(root1);
那下一步呢我怎么用代码把node1加到root1下边呢?
this.treeView1.Nodes["root1"]下边好象没有添加子节点的方法了,是我没找到吗?
抽取所有DOCUMENT
Select Distinct Document From table
sqlReader=....
循环读取:
While (sqlReader.Read())
{
TreeNode tnDocument=new TreeNode(sqlReader["Document"].tostring());
treeView1.Nodes.Add(tnDocument);
sql="Select File Form table " +
"Where Document=" + sqlReader["Document"].tostring();
sqlReaderFile=.....
While (sqlReaderFile.Read())
{
TreeNode tnFile=new TreeNode(sqlReaderFile["File"].toString());
tnDocument.Nodes.Add(tnFile);
}
}就好了。
那么反一反就可以了。
上面代码里面把FILE改为DOCUMENT,把DOCUMENT改为FILE就可以了。
上边sqlReader.Read()
读一次后又不能关闭,不关闭下边的sqlReaderFile.Read()又读不了.
这个该怎么解决呢?
{
string sqlConn = "data source=.;database=bfbc;uid=sa;pwd=sa";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(sqlConn);
conn.Open();
string selectSql = "select FileName,VehicleConfigureDocument from DemarcateRelatingDocument";
DataTable dt=new DataTable();
System.Data.SqlClient.SqlDataAdapter da=new System.Data.SqlClient.SqlDataAdapter(selectSql,conn);
int rtnNum=0;
rtnNum=da.Fill(dt);
for (int i = 0; i < rtnNum; i++)
{
TreeNode fileNameNode = new TreeNode(dt.Rows[i][0].ToString());
if (!this.treeView1.Nodes.Contains(fileNameNode))
{
this.treeView1.Nodes.Add(fileNameNode);
}
TreeNode documentNode = new TreeNode(dt.Rows[i]["VehicleConfigureDocument"].ToString());
if (!fileNameNode.Nodes.Contains(documentNode))
{
fileNameNode.Nodes.Add(documentNode);
}
}
conn.Close();
}以上代码实现的是一个树,表中有FileName和VehicleConfigureDocument 两个字段,以FileName为结点,把VehicleConfigureDocument 做为其子节点加上,FileName对应一个或多个VehicleConfigureDocument ,有多个VehicleConfigureDocument 的话都加在FileName下边.
但是以上代码会是这样的结果:
FileName1
...VehicleConfigureDocument1
FileName2
...VehicleConfigureDocument2
FileName3
...VehicleConfigureDocument3
FileName1
...VehicleConfigureDocument2
怎么能实现这样的:
FileName1
...VehicleConfigureDocument1
...VehicleConfigureDocument1
FileName2
...VehicleConfigureDocument2
FileName3
...VehicleConfigureDocument3
也就是我如何来判断在加如第二个...VehicleConfigureDocument1 时已经有一个FileName1了,不再新加一个FileName1了.
怎么来找树中已经有了FileName1这个节点呢?
代码中红色的那句,那样的判断为什么不起作用呢?