专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > J#

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

发布时间:2011-06-24 19:01:35 文章来源:www.iduyao.cn 采编人员:星星草
求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"];
    }
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: