现在的位置: 首页 > 综合 > 正文

树与数据库

2013年08月19日 ⁄ 综合 ⁄ 共 7941字 ⁄ 字号 评论关闭

  public void tree2()
    {

        string strSql = "select distinct ModuleID, ModuleName,CatalogID from ModuleManager  order by  ModuleID";
         string con = SqlHelper.ConnectionString;
         SqlConnection oconn = new SqlConnection(con);
         oconn.Open();
         SqlDataReader dr;
         SqlCommand scmd = new SqlCommand(strSql, oconn);
         dr = scmd.ExecuteReader();
             
        //SqlDataAdapter daCatalog = new SqlDataAdapter();
        //daCatalog.TableMappings.Add("Table", "CatalogManager");
        ////daCatalog = new SqlDataAdapter(strSql1, SqlHelper.ConnectionString);
        // SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, strSql);
         //SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, strSql);
                //定义对象数组
                TreeNode[] myNodes = new TreeNode[100];

                //初始化对象数组
                for (int i = 0; i< myNodes.Length; i++)
                {
                    myNodes[i] = new TreeNode();
                }

                //从表中取数据
                while (dr.Read())
                {
                    int iParentNodeId = (int)dr["CatalogID"];
                    int iMyNodeId = (int)dr["ModuleID"];

                    if (iParentNodeId != 0)
                    {
                        myNodes[iMyNodeId].Text = dr["ModuleName"].ToString();
                        TreeView1.Nodes.Add(myNodes[iMyNodeId]);
                        myNodes[iParentNodeId].ChildNodes.Add(myNodes[iMyNodeId]);
                    }
                    else
                    {
                        myNodes[iMyNodeId].Text = dr["ModuleName"].ToString();
                        myNodes[iMyNodeId].SelectAction = TreeNodeSelectAction.None;
                        TreeView1.Nodes.Add(myNodes[iMyNodeId]);
                    }
      
                }
          
    }

 

 

 

 

 

 

 

 

 

 

2.................................

    public static void CMFtree(TreeView tvCMFTree)
    {

        DataSet objDS = new DataSet();
        SqlDataAdapter daCatalog = new SqlDataAdapter();
        daCatalog.TableMappings.Add("Table", "CatalogManager");
        daCatalog  = new SqlDataAdapter("select   CatalogName,CatalogID from CatalogManager where CatalogID in(select CatalogID from  FunctionManager)" , SqlHelper.ConnectionString);

        SqlDataAdapter daProducts=new SqlDataAdapter ();
        daProducts.TableMappings.Add("Table", " ModuleManager");
        daProducts = new SqlDataAdapter("select   ModuleName,ModuleID ,CatalogID from ModuleManager", SqlHelper.ConnectionString);

        SqlDataAdapter daFunction=new SqlDataAdapter ();
        daFunction.TableMappings.Add("Table", "FunctionManager");     
        daFunction = new SqlDataAdapter("select   FunctionName ,FunctionID , ModuleID ,CatalogID from FunctionManager", SqlHelper.ConnectionString);

        daCatalog.Fill(objDS, "CatalogManager ");
        daProducts.Fill(objDS, "ModuleManager");
        daFunction.Fill(objDS, "FunctionManager");

        //建立父-子 表关系
        DataColumn dcCat;
        DataColumn dcMod;
        DataColumn dcFun;

        dcCat = objDS.Tables["CatalogManager"].Columns["CatalogID"];
        dcMod = objDS.Tables["ModuleManager"].Columns["CatalogID"];
        dcFun = objDS.Tables["FunctionManager"].Columns["ModuleID"];

        DataRelation CatToMod = new DataRelation("rnCatToMou", dcCat, dcMod);
        DataRelation ModToFun = new DataRelation("rnMouToFun", dcMod, dcFun);
        objDS.Relations.AddRange(new DataRelation[] { CatToMod, ModToFun });

 

            int i, j, k;//每层节点数

            for (i = 0; i < objDS.Tables["CatalogManager"].Rows.Count; i++)
            {
                TreeNode ParentNode = new TreeNode();
                TreeNode myTreeNode = new TreeNode();
                myTreeNode.Text = objDS.Tables["CatalogManager"].Rows[i].ItemArray[1].ToString();
                ParentNode.ChildNodes.Add(myTreeNode);
                tvCMFTree.Nodes.Add(ParentNode);

                for (j = 0; j < objDS.Tables["ModuleManager"].Rows.Count; j++)
                {
                    TreeNode nodeMod = new TreeNode();
                    nodeMod.Text = objDS.Tables["ModuleManager"].Rows[i].ItemArray[1].ToString();
                    myTreeNode.ChildNodes.Add(nodeMod);
                    tvCMFTree.Nodes.Add(myTreeNode);

                    for (k = 0; k < objDS.Tables["FunctionManager"].Rows.Count; k++)
                    {
                        TreeNode nodeFun = new TreeNode();
                        nodeMod.Text = objDS.Tables["FunctionManager"].Rows[i].ItemArray[1].ToString();
                        nodeMod.ChildNodes.Add(nodeFun);
                        tvCMFTree.Nodes.Add(nodeMod);

                    }
                }
            }

    }

    public void databind()
    {
        CMSRolesDAL r = new CMSRolesDAL();
        r.CMFtree(TreeView1);
        //TreeView1.DataSource = r.get_tree();
        //TreeView1.DataBind();
    }
    保存新增的角色信息

3..........................................

 public void AddTree(int ParentID, TreeNode pNode, TreeView tvCMF)
    {

        string strSql1 = "select   CatalogName,CatalogId ,(select count (*)from CatalogManager)ParentID from CatalogManager ";
        string strSql2 = "select distinct m.ModuleID, m.ModuleName,c.CatalogID,(select count(* ) from  CatalogManager WHERE  c.CatalogID=m.CatalogID)ChildID from  CatalogManager c,ModuleManager m order by  m.ModuleID";
        string strSql3 = "select distinct f.FunctionName,f.FunctionID,f.ModuleID,(select count(* ) from ModuleManager WHERE  m.ModuleID=f.ModuleID)LeafID    from  ModuleManager m,FunctionManager f order by f.FunctionID";

        DataSet ds = new DataSet();

        SqlDataAdapter daCatalog = new SqlDataAdapter();
        daCatalog.TableMappings.Add("Table", "CatalogManager");
        daCatalog = new SqlDataAdapter(strSql1, SqlHelper.ConnectionString);

        SqlDataAdapter daModule = new SqlDataAdapter();
        daModule.TableMappings.Add("Table", " ModuleManager");
        daModule = new SqlDataAdapter(strSql2, SqlHelper.ConnectionString);

        SqlDataAdapter daFunction = new SqlDataAdapter();
        daFunction.TableMappings.Add("Table", "FunctionManager");
        daFunction = new SqlDataAdapter(strSql3, SqlHelper.ConnectionString);

        daCatalog.Fill(ds, "CatalogManager ");
        daModule.Fill(ds, "ModuleManager");
        daFunction.Fill(ds, "FunctionManager");

      
        DataView dvTree1 = new DataView(ds.Tables["CatalogManager"]);
        DataView dvTree2 = new DataView(ds.Tables["ModuleManager"]);
        DataView dvTree3 = new DataView(ds.Tables["FunctionManager"]);

        //TreeView tvCMF = new TreeView();

        dvTree1.RowFilter = "[ParentID] = " + ParentID;
        foreach (DataRowView Row1 in dvTree1)
        {

            if (pNode == null)
            {    //添加根节点

                pNode.Text = Row1["CatalogName "].ToString();
                tvCMF.Nodes.Add(pNode);
                pNode.Expanded = true;

            }

            else
            {

                dvTree2.RowFilter = "[CatalogID] = " + ParentID;
                foreach (DataRowView Row2 in dvTree2)
                {

                    //̀添加当前目录节点的子节点
                    //添加符合条件的模块记录
                    TreeNode Node2 = new TreeNode();
                    if (pNode == null)
                    {    //添加根节点
                        Node2.Text = Row2["ModuleName "].ToString();
                        pNode.ChildNodes.Add(Node2);
                        tvCMF.Nodes.Add(Node2);
                        pNode.Expanded = true;
                        AddTree(Int32.Parse(Row2["ModuleID "].ToString()), Node2, tvCMF);    //再次递归
                    }
                    else
                    {
                        dvTree3.RowFilter = "[FunctionID] =  " + ParentID;
                        foreach (DataRowView Row3 in dvTree2)
                        {
                            TreeNode Node3 = new TreeNode();
                            if (pNode == null)
                            {

                                //̀添加当前模块节点的功能节点
                                Node3.Text = Row3["FunctionName "].ToString();
                                tvCMF.Nodes.Add(Node3);
                                Node3.Expanded = true;
                                AddTree(Int32.Parse(Row3["FunctionID "].ToString()), Node3, tvCMF); //再次递归

                            }
                        }
                    }
                    AddTree(Int32.Parse(Row1["CatalogId "].ToString()), pNode, tvCMF);    //再次递归
                }
            }
        }
    }
          

抱歉!评论已关闭.