TreeView和数据库绑定

在网上看了天轰穿老师的TreeView这一节课,他讲的很简单,代码如下:
数据库结构:第一个表是big,第二个表是class

代码如下:
privatevoidForm2_Load(objectsender,EventArgse)
{
DataViewdv
=drv("selectbid,titlefrombig");
TreeNoden
=newTreeNode();
n.Text
="中国地区";
this.treeView1.Nodes.Add(n);

foreach(DataRowViewdatavindv)
{
TreeNodetn
=newTreeNode();
tn.Text
=datav["title"].ToString();
tn.Tag
=datav["bid"];
n.Nodes.Add(tn);
AddChildNodes(tn);

}

//ExpandNode(this.treeView1.Nodes);
}

privateDataViewdrv(stringsql)
{
SqlConnectioncon
=newSqlConnection("server=.;database=test;uid=sa;pwd=;");
SqlDataAdaptersda
=newSqlDataAdapter(sql,con);
DataTabledt
=newDataTable();
sda.Fill(dt);
returndt.DefaultView;
}

privatevoidAddChildNodes(TreeNodet)
{
intbid=Convert.ToInt32(t.Tag.ToString());
DataViewd
=drv("select*fromclasswherebid="+bid);
foreach(DataRowViewdatavind)
{
TreeNodenode
=newTreeNode();
node.Text
=datav["title"].ToString();
node.Tag
=datav["cid"];
t.Nodes.Add(node);
}
}
/*
privatevoidExpandNode(TreeNodeCollectiontnc)
{
foreach(TreeNodenodeintnc)
{
node.Expand();
ExpandNode(node.Nodes);
}
}
*/

可是我在做项目时需要根据一个表中的数据来显示树形目录,数据库结构如下:

构件树形目录的方法如下:
#region构建TreeView

publicboolBuildTree(TreeViewtv,DataSetds)
{
tv.Nodes.Clear();

foreach(DataRowdbRowinds.Tables[0].Rows)
{
if(dbRow["FatherNumber"].ToString()==string.Empty)
{
dbRow[
"FatherNumber"]=DBNull.Value;
}
}
ds.Relations.Add(
"NodeRelation",ds.Tables[0].Columns["TypeNumber"],ds.Tables[0].Columns["FatherNumber"],false);

foreach(DataRowdbRowinds.Tables[0].Rows)
{
if(dbRow.IsNull("FatherNumber"))
{
TreeNodenewNode
=CreateNode(dbRow["TypeName"].ToString(),dbRow["TypeNumber"].ToString());

tv.Nodes.Add(newNode);
PopulateSubTree(dbRow,newNode);
}
}

//展开所有节点
tv.ExpandAll();

returntrue;
}

privatevoidPopulateSubTree(DataRowdbRow,TreeNodenode)
{
foreach(DataRowchildRowindbRow.GetChildRows("NodeRelation"))
{
TreeNodechildNode
=CreateNode(childRow["TypeName"].ToString(),childRow["TypeNumber"].ToString());
node.Nodes.Add(childNode);
PopulateSubTree(childRow,childNode);
}
}

privateTreeNodeCreateNode(stringtext,stringtag)
{
TreeNodenode
=newTreeNode();
node.Text
=text;
node.Tag
=tag;
returnnode;
}

这样调用:

SqlConnectioncon=newSqlConnection("server=192.168.1.192;database=AUDE_KCGL;uid=sa;pwd=;");
SqlDataAdaptersda
=newSqlDataAdapter("selectTypeNumber,FatherNumber,TypeNamefromKC_ObjectType",con);
DataSetdsTree
=newDataSet();
sda.Fill(dsTree);
//调用方法构件树形目录
BuildTree(this.treeView1,dsTree);


程序运行效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值