当前位置: 代码迷 >> J# >> 求C#码: 用SQL Server表table填充treeview1并为各分支加复选框,该怎么处理
  详细解决方案

求C#码: 用SQL Server表table填充treeview1并为各分支加复选框,该怎么处理

热度:7435   发布时间:2013-02-25 00:00:00.0
求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

------解决方案--------------------------------------------------------
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"];    }}
  相关解决方案