搜索了一下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

解决方案 »

  1.   

    select distinct account from tAccount
    1、先获取用户类别。
    2、添加某一类别  第一层循环
    3、添加该类别的用户  第二层循环
    相应代码自己写吧。
      

  2.   

    刚写的:
    这里的根节点可根据情况设置。我是为了自己这个项目所需设置的,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);
    }
    }
      

  3.   

    TreeNode node = new TreeNode("administrator");上面这句代码在win form 中编译通过
    在web form 中却提示错误:
    方法 'TreeNode' 沒有任何多載使用 '1' 個引數
      

  4.   

    那就
    TreeNode node = new TreeNode();
    node.text="administrator";
      

  5.   

    http://www.cnblogs.com/renyu732/archive/2005/09/27/244735.html
      

  6.   

    用发应该和winform下的差不多的吧?
    看看msdn就知道了