//建树的基本思路是:从根节点开始递归调用显示子树 
public void InitTree(TreeNodeCollection Nds,string parentId)
{

DataView dv = new DataView();

TreeNode tmpNd; string intId; dv.Table = ds.Tables[0]; dv.RowFilter = "rootId = " + parentId; foreach(DataRowView drv in dv)
{ tmpNd = new TreeNode(); tmpNd.ID = drv["id"].ToString(); if(drv["linkUrL"].ToString().Trim() != "")
{
tmpNd.Text = "<a href ='"+drv["linkUrL"].ToString().Trim() +"'target='mainFrame'>"+drv["className"].ToString()+"</a>";
}
else
{
tmpNd.Text = drv["className"].ToString();
} Nds.Add(tmpNd); intId = drv["rootId"].ToString(); InitTree(tmpNd.Nodes,tmpNd.ID);
}
}

解决方案 »

  1.   

    楼上都说了,偶稍微补充下:首先对第一列GROUP检索出来,然后对每一项,进行WHERE的检索,检索出对应的第二列来。基本上就是一个二层循环。
    (似乎是笨方法,仅供参考)
      

  2.   

    select *,'目录' as type from 表1
    union 
    select *,'文件' as type from 表2设树的nodetype分别为目录和文件,然后进行榜定即可
      

  3.   

    数据量大的时候别用第归,慢给你个思路a    b
    111  111001
    111  111002
    222  222001
    表按照a,b排序string a="";
    逐行取表的行,当该行的a字段 不等于a的时候在树的根节点添加节点,否则在刚添加的点(根节点的孩子)下面添加节点
      

  4.   

    treeView1.Nodes.Clear() ;
    System.Windows.Forms.TreeNode mNode=new TreeNode("全部");
    //mNode.ImageIndex =1;
    treeView1.Nodes.Add(mNode) ;
    //假设DataSet 已经取得
    System.Windows.Forms.TreeNode nNode=new TreeNode("在职");
    System.Windows.Forms.TreeNode pNode=new TreeNode("离职");
    treeView1.TopNode.Nodes.Add(nNode) ;
    treeView1.TopNode.Nodes.Add(pNode) ;
    treeView1.Select ();
    if (ds.Tables [0].Rows.Count <=0 )
    {
    return;
    }
    else
    {
    // add Add some childtreenodes
     
    foreach(DataRow dr in ds.Tables [0].Rows )
    {

    System.Windows.Forms.TreeNode aNode=new TreeNode(dr["Name"].ToString() );
    System.Windows.Forms.TreeNode bNode=new TreeNode(dr["Name"].ToString());
    treeView1.Nodes [0].Nodes[0].Nodes .Add (aNode);
    treeView1.Nodes [0].Nodes[1].Nodes .Add (bNode);
    }
    }
    }
     
    }