1.先在FORM_LOAD时把顶级的节点加上。
private void Form_Load(Object sender,System.EventArgs e)
{
...
OleDbDataAdapt oDa = New OleDbDataAdapter("Select product_code,product_name from table1 where len(product_code)=2", oDbConn);
oDa.Fill(ds,"table1")
for(i=0;i<ds.Tables[0].Rows.Count;i++)
{
   TreeNode NodeX =New TreeNode();
   NodeX.Text = ds.Tables[0].Rows[i]["product_name"];
   NodeX.Tag = ds.Tables[0].Rows[i]["product_code"];
   NodeX.Nodes.Add("")
   treeview1.Nodes.Add(NodeX)
}
}

解决方案 »

  1.   

    这个应该是可以,代码没有,说个方法吧,以前做个,不过例举的是目录文件。
    你可以选把要的表中的记录取出来,放入数据集中,建个DataView dv,用dv.Filter过滤要的记录,递归例举记录,如:先选出01类的记录,放在根节点。然后查询数据集中为0101类的记录,然后把它加入到treeview子节点,类推。
      

  2.   

    补充1,上面的代码少了一句,在NodeX.Nodes.Add("")前加一句:        NodeX.ImageIndex = 0,
    说明:每个根节点下面添加一个空节点“”,ImageIndex (0-表示节点尚未展开)2.每次点击节点扩展前,为该节点添加实际的子节点加如下代码:
    private void treeview1_BeforeExpand(Object sender,System.Windows.Forms.TreeViewCancelEventArgs e) 
    {
       If (e.Node.ImageIndex == 1) return;
       If((e.Node.GetNodeCount(False)==1)&&(e.Node.Nodes(0).Text==""))
       {
            e.Node.Nodes(0).Remove();
            EnumerateDirs(e.Node);   //自定义的子节点添加函数
        }
    }
      

  3.   

    private void EnumerateDirs(System.Windows.Forms.TreeNode oParent)
    {
        string strSQL;
        strSQL = "Select * from table1 Where product_code  Like '" + oParent.Tag + "[0-9][0-9]'";
        OleDbDataAdapter oDa=new OleDbDataAdapter(strSQL,oConn);
        DataSet ds = New DataSet();
        oDa.Fill(ds);    oParent.SelectedImageIndex = 1
        foreach(DataRow dRow In ds.Tables(0).Rows)
        {
            TreeNode oNode =new TreeNode();
            oNode.Text = dRow("product_name");
            oNode.Tag = dRow("product_code");
            oNode.ImageIndex = 0;
            oParent.Nodes.Add(oNode);
            oNode.Nodes.Add("");
            }
            ds.Close();
    }
      

  4.   

    由于我的原代码是VB。NET写的(已调通),在改成C#时没测试,如果有语法错误,自己调一下,有的“;”忘写了。
      

  5.   

    非常感谢 gaodz(慕白) 兄弟,你的帮助让我可以睡个好觉,谢谢你!!