求C#码: 用SQL Server表table填充treeview1并为各分支加复选框
求C#代码把SQL Server中表table的数据填充到treeview1,先建立一个根名为“全部区本”,第一级分支是a,b,c三个分支,a,b,c分支都有两个子分支即1,2。 同时为两级分支都设有复选框。要求在一个form_load里完成以上所有动作。
已有SQL Server表table数据如下:
id father son
1 a 1
2 a 2
3 b 1
4 b 2
5 c 1
6 c 2
------解决方案--------------------
- C# code
private void Page_Load(object sender, System.EventArgs e) { InitTreeView(this.TreeView1.Nodes); // 在此处放置用户代码以初始化页面 } public void InitTreeView(TreeNodeCollection node) { this.InitTree(node,"0"); } public void InitTree(TreeNodeCollection Nds,string parentId) { DataSet ds=new DataSet(); ds=myDt.TreeInfo(); DataView dv = new DataView(); TreeNode tmpNd; string intId; dv.Table = ds.Tables[0]; dv.RowFilter = "PARENTID = " + parentId; foreach(DataRowView drv in dv) { tmpNd = new TreeNode(); tmpNd.ID = drv["NODEID"].ToString(); if(drv["linkUrL"].ToString().Trim() != "") { tmpNd.Text = "<a href ='"+drv["linkUrL"].ToString().Trim() +"'target='mainFrame'>"+drv["NODENAME"].ToString()+"</a>"; } else { tmpNd.Text = drv["NODENAME"].ToString(); } Nds.Add(tmpNd); intId = drv["PARENTID"].ToString(); InitTree(tmpNd.Nodes,tmpNd.ID); } } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }
------解决方案--------------------
- C# code
private void FrmTree_Load(object sender, EventArgs e) { FillTreeView(); } DataTable dtFather; private void FillTreeView() { dtFather = DBAccess.GetFathers(); DataTable dtSon; TreeNode rootNode = new TreeNode("全部区本"); TreeNode fatherNode; TreeNode sonNode; string father; rootNode.Expand(); foreach (DataRow row in dtFather.Rows) { father = row["father"].ToString(); fatherNode = new TreeNode(father); dtSon = DBAccess.GetSons(row["father"].ToString()); foreach (DataRow rowSon in dtSon.Rows) { sonNode = new TreeNode(rowSon["son"].ToString()); fatherNode.Nodes.Add(sonNode); } rootNode.Nodes.Add(fatherNode); } treeView1.BeginUpdate(); treeView1.Nodes.Add(rootNode); treeView1.EndUpdate(); } class DBAccess { public static DataTable GetFathers() { SqlConnection cn = new SqlConnection(@"server=.\sqlexpress;uid=sa;pwd=;database=demo"); string strSql = "select distinct father from TreeTable"; SqlDataAdapter da = new SqlDataAdapter(strSql, cn); DataSet ds = new DataSet(); cn.Open(); da.Fill(ds, "father"); cn.Close(); return ds.Tables["father"]; } public static DataTable GetSons(string father) { SqlConnection cn = new SqlConnection(@"server=.\sqlexpress;uid=sa;pwd=;database=demo"); string strSql = "select son from TreeTable where father = @father"; SqlDataAdapter da = new SqlDataAdapter(strSql, cn); da.SelectCommand.Parameters.AddWithValue("@father", father); DataSet ds = new DataSet(); cn.Open(); da.Fill(ds, "son"); cn.Close(); return ds.Tables["son"]; } }