我要做一个分层授权,用treeview已实现了分层,第一层为各公司名称,第二层为权限明细(如单据录入、基础资料维护、单据引入等),现在人把这分公司的各权权限保存到数据库中,不知各节点的如公司ID、权限ID如何遍历取过来!?请各位给个例说明一下!

解决方案 »

  1.   

    我也不会,会的快来下啊,我用了checkbox,但不知道怎么遍厉Treeview下才能把选中的checkbox的值加到数据库里面去
      

  2.   

    treeview.selectednode 

    e.Node
    两个循环,
    第一个公司名称,
    第二个权限
    思路就是这样的,
      

  3.   

    你要获取树的ID,初始化的时候要设置有ID这个属性,然后遍历树结点取到每个ID.
    我做过类似的例子,给你邮箱我发你邮箱,你可以参考一下
      

  4.   

    如果只有两层这样就可以了foreach(TreeNode companyNode in treeView1.Nodes)
    {
    //公司节点
       foreach(TreeNode roleNode in companyNode.Nodes)
       {
        //权限节点   }   }
      

  5.   

    To Hxlyjy: .先谢谢了!在线等待!
      

  6.   

    初始化的时候ID可以写到节点的Tag里
      

  7.   

    初始化时已把ID写入tag,但取不出来!不知什么原因!
      

  8.   

    if(tmpdv.Count>0)
    {
    foreach(DataRowView DRV in tmpdv)
    {
    string strTreeNode=DRV["FName"].ToString().Trim();
    TreeNode tmp=new TreeNode(strTreeNode);
    TvView1.Nodes.Add(tmp);
    TvView1.Tag =DRV["FID"].ToString().Trim();
    TvView1.SelectedNode=TvView1.Nodes[i];
    TvView1.Nodes[i].ExpandAll();string str;
    str="select * from T_Role order by FID";
    dt1=datanew.SelectDataBase(str,exeData.ConnString); //读入数据表
    DataTable tempDataTable1=dt1.Copy(); //将数据表复制到另一张表;
    DataView tempDataView1=new DataView(tempDataTable1); //创建视图
    int k=0;
    foreach(DataRowView DRv in tempDataView1)
    {
    strTreeNode=DRv["FMode"].ToString().Trim();
    tmp=new TreeNode(strTreeNode);
    TvView1.SelectedNode.Nodes.Add(tmp);
    TvView1.Tag=DRv["FOrder"].ToString().Trim();
    k+=1;
    }    
    i+=1;
    }
    }如上根目录和子目录的Tag已写入,但取不出来!
      

  9.   

    能否帮我看一下,我上面所设置的Tag值怎么取不回来!是这样设置吗!
      

  10.   

    如下语句可以取到:
    if(TvView1.SelectedNode.Tag != null)
       string strValue = TvView1.SelectedNode.Tag.ToString();
      

  11.   

    private void getnode()
    {
    int sCompanyID;
    int sRigthID;
    long LoginID;
    foreach(TreeNode companyNode in TvView1.Nodes)
    {
    foreach(TreeNode RigthNode in companyNode.Nodes)
    {
    if(RigthNode.Checked)
    {
    string strSQL;
    LoginID=exeData.getTableID("T_Rigth","FID");
    sCompanyID=Convert.ToInt32(companyNode.tag.ToString().Trim()));
    sRigthID=Convert.ToInt32(RigthNode.tag.ToString().Trim());
    try
    {
    strSQL =" IF EXISTS(select * from T_Rigth where FUserID='"+ mUserID+"'and FBrNoID="+sCompanyID+" and FRoleID="+sRigthID+")";
    strSQL +=" Delete T_Rigth where FUserID='"+ mUserID+"'and FBrNoID="+sCompanyID+" and FRoleID="+sRigthID;
    strSQL +=" Insert Into T_Rigth(FID,FUserID,FBrNoID,FRoleID,FFlag) Values("+
    LoginID+","+mUserID+","+sCompanyID+","+sRigthID+",1)";
    datanew.updateDataBaseWithTranNew(strSQL,exeData.ConnString);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
    }
    }
    }看一下,这个Tag值好象没有,看一下!