搜索了一下csdn中关于C#中TreeView的使用方法,大多是针对Win Form的,直接拿到Web Form中使用总是提示不同的错误。
现在有一个权限表(Account)
Accountid username pwd Account
1 user1 user1 administrator
2 user2 user2 administrator
3 user3 user3 supervisor
4 user4 user4 supervisor如何用TreeView控件在Web Form中按照权限字段(Account)来分层显示。
最终的显示效果如下:
--administrator
|--user1
|--user2
--supervisor
|--user3
|--user4
现在有一个权限表(Account)
Accountid username pwd Account
1 user1 user1 administrator
2 user2 user2 administrator
3 user3 user3 supervisor
4 user4 user4 supervisor如何用TreeView控件在Web Form中按照权限字段(Account)来分层显示。
最终的显示效果如下:
--administrator
|--user1
|--user2
--supervisor
|--user3
|--user4
1、先获取用户类别。
2、添加某一类别 第一层循环
3、添加该类别的用户 第二层循环
相应代码自己写吧。
这里的根节点可根据情况设置。我是为了自己这个项目所需设置的,PubVariable.variable.SysName是我系统中的一个变量,也是项目所需,可以不看它。 private void Form_MenuManage_Load(object sender, System.EventArgs e)
{
this.oleDbConnection1=Database.IM_Database.OpenDB_23();
this.command1 = oleDbConnection1.CreateCommand();
this.command1.CommandText = "SELECT * FROM ra_sys_func where sysid="+ PubVariable.variable.SysId +" order by sysid,funcid,funcid2";
this.oleDbDataAdapter1 =new OleDbDataAdapter(command1);
this.ds = new DataSet();
this.oleDbDataAdapter1.Fill(ds,"ra_sys_func"); //造根节点数据 sysid=8 funcid2=0
DataTable root = new DataTable("root");
root.Columns.Add (new DataColumn ("funcid2",System.Type.GetType ("System.Int32") ) );
root.Columns.Add(new DataColumn("funcnm", System.Type.GetType("System.String") ) );
object[] rootVals = new object[2];
DataRowCollection rc;
rc = root.Rows;
DataRow myNewRow;
rootVals[0] = 0;
rootVals[1] = PubVariable.variable.SysName;
// Add and return the new row.
myNewRow = rc.Add(rootVals);
DataView dv0=new DataView();
dv0.Table = root ; TreeNode rootNd;
rootNd=new TreeNode(PubVariable.variable.SysName);
rootNd.Text=PubVariable.variable.SysName;
rootNd.ImageIndex=0;
treeView1.Nodes.Add(rootNd);
InitTree(rootNd.Nodes,(DataRowView)dv0[0]);
rootNd.ExpandAll();
treeView1.CheckBoxes = true; } private void InitTree(TreeNodeCollection Nds,DataRowView drv)
{
DataView dv=new DataView();
TreeNode tmpNd;
dv.Table=this.ds.Tables["ra_sys_func"];
dv.RowFilter= "funcid="+ drv["funcid2"].ToString().Trim() ;
foreach( DataRowView drv1 in dv)
{
tmpNd=new TreeNode(drv1["funcnm"].ToString().Trim());
tmpNd.Text=drv1["funcnm"].ToString().Trim();
if (tmpNd.Text =="-")
{
tmpNd.ImageIndex=3;
tmpNd.SelectedImageIndex=3;
}
else
{
tmpNd.ImageIndex=1;
tmpNd.SelectedImageIndex=2;
}
tmpNd.Tag=drv1;
Nds.Add(tmpNd);
InitTree(tmpNd.Nodes,drv1);
}
}
在web form 中却提示错误:
方法 'TreeNode' 沒有任何多載使用 '1' 個引數
TreeNode node = new TreeNode();
node.text="administrator";
看看msdn就知道了