数据库 id,name parent private void CreatTree()
{
TreeNode node = new TreeNode();
node.Text = hsxmname +"【试验范本】";
node.NodeData = "-1";
node.Type = "root";
node.Expanded = true ;
TreeView1.Nodes.Add(node);
InitTree(node);
}
private void InitTree(TreeNode nod)
{
string sql = "select id,name,jd_kind from zl_fb_test where parent is null";
DataSet ds = cls_public.GetDataSetOfSql(sql,"test");
DataTable dt  = ds.Tables["test"];
foreach (DataRow row in dt.Rows)
{
TreeNode nox = new TreeNode();
nox.NodeData = row["id"].ToString();
nox.Text = row["name"].ToString();
nox.Type = row["jd_kind"].ToString();
nox.Expanded = true ;
nod.Nodes.Add(nox);
//FillTree(nox);
}
}
private void FillTree(TreeNode nod)
{
string sql = "select id,name,jd_kind from zl_fb_test where parent='"+ nod.NodeData+"'";
DataSet ds = cls_public.GetDataSetOfSql(sql,"test");
DataTable dt = ds.Tables["test"];
foreach(DataRow row in dt.Rows)
{
TreeNode temp = new TreeNode();
temp.NodeData = row["id"].ToString();
temp.Text = row["name"].ToString();
temp.Type = row["jd_kind"].ToString();
temp.Expanded = true ;
nod.Nodes.Add(temp);
}
}

解决方案 »

  1.   

    我现在是能获得每个子节点的值,但是就是加不到树上去.子节点是另一个表里的,与主表通过外键关联.
    public void CreateTree(TreeNode node,string id)
    {
    SqlConnection sqlconn=new SqlConnection("server=(local);Trusted_Connection=yes;database=lzy");

    SqlDataAdapter sqlda=new SqlDataAdapter("select * from Server" ,sqlconn);
    DataSet ds=new DataSet();
    sqlda.Fill(ds,"Server");
    SqlDataAdapter sqlda1=new SqlDataAdapter("select * from Items ",sqlconn);
    DataSet ds1=new DataSet();
    sqlda1.Fill(ds1,"Items");
    DataTable dt1=ds1.Tables["Items"];
    DataTable dt=ds.Tables["Server"];
             
    foreach(DataRow dr in dt.Rows)//遍历所有节点
    {   string strNode="0";
    TreeNode nd=new TreeNode();
    string a=dr["ID"].ToString();//存放节点
    nd.Text=dr["Name"].ToString();//节点名称
     
    //TreeNode nd1=new TreeNode();
                   // TreeNode nd1=new TreeNode();//此节点只作为“nd”展开的依据
    //nd1.Text="正在加载...";
    //nd1.Text=dr["ID"].ToString()+"\t"+dr["ServerID"].ToString()+"\t"+dr["ItemName"].ToString()+dr["SortIndex"].ToString();

    if(node==null)
    {
    this.treeView1.Nodes.Add(nd);//添加根节点
    //查询子节点个数

    //nd1.Nodes.Add (strNode);
    //判断是否有子节点
    SqlDataAdapter sqlda2=new SqlDataAdapter("select * from Items where ServerID="+a ,sqlconn);
    sqlda1.Fill(ds1,"Items");
    foreach(DataRow dr1 in dt1.Rows)
    {
    TreeNode nd2=new TreeNode();
    nd2.Text=dr1["ID"].ToString()+"\t"+dr1["ServerID"].ToString()+"\t"+dr1["ItemName"].ToString()+dr1["SortIndex"].ToString();
    strNode=nd2.Text ;
    nd2.Nodes.Add(strNode);
    }  if(Convert.ToInt32(ds1.Tables["Items"].Rows[0].ItemArray[0])!=0)
    {  
       nd.Nodes.Add(nd1);
    //添加节点,只是为了能展开
                            }

    }
    else
    {
    //添加子节点
    //查询子节点个数
    SqlDataAdapter sqlda2=new SqlDataAdapter("select * from Items where ServerID="+a ,sqlconn);
    sqlda1.Fill(ds1,"Items");
    //判断是否有子节点
    if(Convert.ToInt32(ds1.Tables["Items"].Rows[0].ItemArray[0])!=0)
    {
    nd.Nodes.Add(nd1);//添加节点,只是为了能展开
    }
    }
    else里面的好像不执行.子节点的foreach循环里面的nd2.Nodes.Add(strNode);也没加上节点.谁能帮我看看啊
      

  2.   

    我改用 cqpub() 的方法现在读出来了.呵呵.