请教关于vs2005中treeview的数据绑定的使用
查找了以前的帖子,没太看明白。
描述:
添加了一个treeview,选择数据源只有xml和站点地图。主要是为了以后管理方便,我想把数据表中的数据绑定到treeview。
数据表的结构是id,content,parentid,isleaf
1 学校 0 0
2 班级1 1 0
3 班级2 1 0
4 学生1 1 0
想显示出 学校-班级1-学生1
-班级2
问题:这样的数据结构是否合理,又该怎么直接绑定到数据表呢?
问题点数:50、回复次数:9Top
1 楼honeyrose(redrose)回复于 2006-07-10 08:11:43 得分 0
是websiteTop
2 楼fxnet2000(大漠孤烟直)回复于 2006-07-10 08:50:04 得分 0
帮顶!Top
3 楼honeyrose(redrose)回复于 2006-07-10 09:19:25 得分 0
谢谢Top
4 楼yf1025(小桥,流水,人家)回复于 2006-07-10 09:44:08 得分 50
你想做成这样:
学校
班级1
学生1
班级2
学生2
?
如果是的话表的id改一下,id, content, parentid, isleaf
1 学校 0 0
102 班级1 1 0
103 班级2 1 0
102004 学生1 102 0
102005 学生2 102 0
103004 学生4 103 0
103005 学生5 103 0
在用这个方法:
private void BindTreeView()
{
int i = 0;
string sqlstr = db.GetConnectionString();
try
{
using (SqlConnection conn = new SqlConnection(sqlstr))
{
conn.Open();
SqlCommand comm = new SqlCommand("select * from Department", conn);
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
{
int j = 0;
//添加父节点
TreeView1.Nodes.Add(new TreeNode(reader[1].ToString(),reader[0].ToString()));
using (SqlConnection mycon = new SqlConnection(sqlstr))
{
mycon.Open();
SqlCommand mycom = new SqlCommand("select id,dutyName from duty where deptID = @deptID", mycon);
mycom.Parameters.Add("@deptID", reader[0].ToString());
SqlDataReader myreader = mycom.ExecuteReader();
while (myreader.Read())
{
//添加子节点
TreeView1.Nodes[i].ChildNodes.Add(new TreeNode(myreader[1].ToString(),myreader[0].ToString()));
using (SqlConnection sqlcon = new SqlConnection(sqlstr))
{
sqlcon.Open();
SqlCommand sqlcom = new SqlCommand("select userID,username from userview where dutyID = @dutyID", sqlcon);
sqlcom.Parameters.Add("@dutyID", myreader[0].ToString());
SqlDataReader sqlreader = sqlcom.ExecuteReader();
while (sqlreader.Read())
{
TreeView1.Nodes[i].ChildNodes[j].ChildNodes.Add(new TreeNode(sqlreader[1].ToString(),sqlreader[0].ToString()));
}
}
j = j + 1;
}
}
i = i + 1;
}
}
this.TreeView1.CollapseAll();
this.TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
这个treeview是2005下的
Top
5 楼honeyrose(redrose)回复于 2006-07-10 09:58:56 得分 0
我看看,谢谢!Top
6 楼honeyrose(redrose)回复于 2006-07-11 07:39:06 得分 0
我的数据库是sqlserver2003,连接时出现了错误在:
建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 。我打开了tcpip还是同样的错误
请问vs2005能使用sqlserver2003吗?Top
7 楼honeyrose(redrose)回复于 2006-07-11 07:40:54 得分 0
把yf1025的代码改了改,运行时连不上SQL Server 2005 。而我的数据是在 sqlserver2003。Top
8 楼whb963(ddd)回复于 2006-08-21 17:59:05 得分 0
string str="select bh ,mc from kmb where bs='n'";
DataSet ds = datacon.Base.ExecuteSql4Ds(str);
treeView1.Nodes.Clear();
int i ,j ;
for (i=0 ;i<ds.Tables[0].Rows.Count;i++)
{
TreeNode temND =new TreeNode(ds.Tables[0].Rows[i]["bh"].ToString() +' '+ ds.Tables[0].Rows[i]["mc"].ToString());
string str1=" select bh,mc,sjbh from kmb2 where bs='n' and sjbh= ' "+ ds.Tables[0].Rows[i]["bh"].ToString()+"'";
MessageBox.Show(str1);
DataSet dsM = datacon.Base.ExecuteSql4Ds(str1);
for (j=0 ;j<dsM.Tables[0].Rows.Count;j++)
{
TreeNode temC =new TreeNode(dsM.Tables[0].Rows[j]["bh"].ToString()+' '+ dsM.Tables[0].Rows[j]["mc"].ToString());
// dsM.Clear();
temND.Nodes.Add(temC) ;
}
dsM.Clear();
treeView1.Nodes.Add(temND);
}Top
9 楼whb963(ddd)回复于 2006-08-22 14:46:48 得分 0
string str="select bh ,mc from kmb where bs='n'";
DataSet ds = datacon.Base.ExecuteSql4Ds(str);
treeView1.Nodes.Clear();
int i ,j ;
for (i=0 ;i<ds.Tables[0].Rows.Count;i++)
{
TreeNode temND =new TreeNode(ds.Tables[0].Rows[i]["bh"].ToString() +' '+ ds.Tables[0].Rows[i]["mc"].ToString());
string strSQL=" select bh ,mc ,sjbh from kmb2 where bs='n' and sjbh= '"+ ds.Tables[0].Rows[i]["bh"].ToString()+"'";
DataSet dsM = datacon.Base.ExecuteSql4Ds(strSQL);
for (j=0 ;j<dsM.Tables[0].Rows.Count;j++)
{
TreeNode temC =new TreeNode(dsM.Tables[0].Rows[j]["bh"].ToString()+' '+ dsM.Tables[0].Rows[j]["mc"].ToString());
temND.Nodes.Add(temC) ;
}
treeView1.Nodes.Add(temND);
}
}
这个我测了,通过了Top




