首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求C#码: 用SQL Server表table填充treeview1并为各旁支加复选框

2012-12-28 
求C#码: 用SQL Server表table填充treeview1并为各分支加复选框求C#码: 用SQL Server表table填充treeview1

求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"];
    }
}

热点排行