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); //再次递归
}
}
}
}