求C#码: 用SQL Server表table填充treeview1并为各分支加复选框
求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
[解决办法]
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
}
}
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"];
}
}