企业如何通过vue小程序开发满足高效运营与合规性需求
292
2023-11-25
如何用数据库的数据动态产生TreeView
如何用数据库的数据动态产生TreeView起始现在好多方法都是先生成XML,然后在生成TreeView。其实,本身创建一个动态的TreeView并不是件很复杂的事。
以下就具体说明,如何产生一个动态的树:
首先,为这个树先要获取数据,如下:
private DataTable dtTree = null;
private DataView dv = null;
private void CreateTable()
{
dtTree = new DataTable( "TreeDBInfo" );
dtTree.Columns.Add( new DataColumn( "TypeID", typeof(int) ) );
dtTree.Columns.Add( new DataColumn( "TypeName", typeof(string) ) );
dtTree.Columns.Add( new DataColumn( "TypeParentID", typeof(int) ) );
dtTree.Rows.Add( new object[]{1, "Parent1", 0} );//0 is that the type has no parent
dtTree.Rows.Add( new object[]{2, "Parent2", 0} );
dtTree.Rows.Add( new object[]{3, "Parent3", 0} );
dtTree.Rows.Add( new object[]{ 4, "Child1", 1} );
dtTree.Rows.Add( new object[]{ 5, "Child2", 1} );
dtTree.Rows.Add( new object[]{ 6, "Child3", 2} );
dtTree.Rows.Add( new object[]{ 7, "GrandChild1", 4} );
dtTree.Rows.Add( new object[]{ 8, "GrandChild2", 4} );
dtTree.Rows.Add( new object[]{ 9, "GrandChild3", 5} );
}
这是一个简单的属性结构,如果要从数据库读出的话,只要为dtTable指定为已经在DataSet填充好的Table即可,这里就不细说了。
接下来,就是生成树的函数,如下:
private void CreateTree()
{
dv = dtTree.DefaultView;
dv.Sort = "TypeParentID ASC";
DataRowView[] arrDRV = dv.FindRows( 0 );//Get root data info
if( arrDRV.Length == 0 ) return;
TreeNode tnNew = null;
foreach( DataRowView drv in arrDRV )
{
tnNew = trvDBBinding.Nodes.Add( drv.Row["TypeName"].ToString() );
tnNew.Tag = drv.Row["TypeID"].ToString();//Save "TypeID" in nodes tag
CreateTreeNode( ref tnNew );
}
}
private void CreateTreeNode( ref TreeNode tnParent )
{
DataRowView[] arrDRV = dv.FindRows( tnParent.Tag );//Get children data info
if( arrDRV.Length == 0 ) return;
TreeNode tnNew = null;
foreach( DataRowView drv in arrDRV )
{
tnNew = tnParent.Nodes.Add( drv.Row["TypeName"].ToString() );
tnNew.Tag = drv.Row["TypeID"].ToString();//Save "TypeID" in nodes tag
CreateTreeNode( ref tnNew );
}
}
简单调用如下:
CreateTable();
CreateTree();
来自 “ ITPUB博客 ” ,链接:http://blog.itpub-/374079/viewspace-130581/,如需转载,请注明出处,否则将追究法律责任。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~