很简单的树,也不知道是数据库服务器的问题还是怎么,就是无法生成,提示jit调试失败什么的,要命嘞.数据库的结构是这样的 
          parentid,         childid,      pname,
0 00000000 董事会
00000000 0001 总裁
0001 0002 经营决策
0001 0003 管理决策
0001 0004 顾问支持
0004 0005 律师
0004 0006 顾问
0002 0007 生产公司
0002 0008 销售公司
0002 0009 投资公司 程序代码也很明白,不知道是那里的问题,请高手给指点指点.DataSet ds;
Page_Load()
{
string strsql ="SELECT * FROM HR_dept_tree2 ";
db.CnRead2(strsql); 
DataTable dt =db.CnRead2(strsql).Tables[0]; 
ds = db.CnRead2(strsql);
InitTree(TreeView1.Nodes,"0")  // 初始化树}private void InitTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
Microsoft.Web.UI.WebControls.TreeNode tmpNd;
string intId;
dv.Table=ds.Tables[0];
dv.RowFilter="ParentId=" + parentId + "" ;
foreach(DataRowView drv in dv)
{
tmpNd=new Microsoft.Web.UI.WebControls.TreeNode();
tmpNd.ID=drv["ChildID"].ToString();
tmpNd.Text=drv["Code"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}请大家给看看是什么问题.

解决方案 »

  1.   

    你应该对TreeNode操作不是对TreeNodeCollection操作
      

  2.   

    是不是加来加去只加了一个节点进去。
    代码这里有问题
    ============================
    Microsoft.Web.UI.WebControls.TreeNode tmpNd;
    string intId;
    dv.Table=ds.Tables[0];
    dv.RowFilter="ParentId=" + parentId + "" ;
    foreach(DataRowView drv in dv)
    {
    tmpNd=new Microsoft.Web.UI.WebControls.TreeNode();
    tmpNd.ID=drv["ChildID"].ToString();
    tmpNd.Text=drv["Code"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.ID);
    }
    ============================

    Microsoft.Web.UI.WebControls.TreeNode tmpNd;放入到
    foreach(DataRowView drv in dv)
    中去试试看
      

  3.   

    Dim dv As New DataView
            Dim drv As DataRowView
            Dim tmpNd As TreeNode
            Dim i As Integer
            Try
                dv.Table = ds.Tables("tree")           
                For Each drv In dv
                    tmpNd = New TreeNode
                    strID = drv("dcID")
                    tmpNd.ID = strID
                    tmpNd.Text = drv("cdsc")
                    Nds.Add(tmpNd)
                    intiTree(Nds(Nds.Count - 1).Nodes, CType(strID, Integer), 0)            Next
            Catch ex As Exception
                Response.Write(ex.ToString)
            End Try
      

  4.   

    private void InitTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds, string parentId) 

     int i; 
     TreeNode tmpNd; 
     DataSet dt; 
     dt = func.GetDataTable("select * from pubSystemTree where F_Parent='" + parentId + "' order by sort"); 
     for (int i = 0; i <= dt.Tables(0).Rows.Count - 1; i++) { 
       tmpNd = new TreeNode(); 
       tmpNd.ID = dt.Tables(0).Rows(i)("F_SysCode").ToString(); 
       tmpNd.Text = dt.Tables(0).Rows(i)("F_SysName").ToString(); 
       tmpNd.NodeData = dt.Tables(0).Rows(i)("F_SysCode").ToString(); 
       tmpNd.Target = dt.Tables(0).Rows(i)("F_Memo").ToString(); 
       if (dt.Tables(0).Rows(i)("F_Memo") == "1") { 
         tmpNd.CheckBox = true; 
         if (tbTemp.Text != "0") { 
           DataSet ds; 
           ds = func.GetDataTable("Select * from pubUserPermit where UserID=" + tbTemp.Text + " and LocationID=" + tbLocation.Text + " and F_SysCode='" + dt.Tables(0).Rows(i)("F_SysCode") + "'"); 
           if (ds.Tables(0).Rows.Count > 0) { 
             tmpNd.Checked = true; 
           } else { 
             tmpNd.Checked = false; 
           } 
         } 
       } else { 
         tmpNd.CheckBox = false; 
       } 
       tmpNd.Expanded = true; 
       Nds.Add(tmpNd); 
       InitTree(tmpNd.Nodes, tmpNd.ID); 
     } 
    }
      

  5.   

    if (dt.Tables(0).Rows(i)("F_Memo") == "1") { 
         tmpNd.CheckBox = true; 
         if (tbTemp.Text != "0") { 
           DataSet ds; 
           ds = func.GetDataTable("Select * from pubUserPermit where UserID=" + tbTemp.Text + " and LocationID=" + tbLocation.Text + " and F_SysCode='" + dt.Tables(0).Rows(i)("F_SysCode") + "'"); 
           if (ds.Tables(0).Rows.Count > 0) { 
             tmpNd.Checked = true; 
           } else { 
             tmpNd.Checked = false; 
           } 
         } 
       } else { 
         tmpNd.CheckBox = false; 
       } 
    //這段樓主可不用看
      

  6.   

    例子:Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '首先进行权限判断
            _Function.UsrJudge()        If Not IsPostBack Then
                '获得本用户所处企业、级别
                Dim EntID As String = Session("_FromEntID") & ""            '获得本用户所处企业级别的所有企业信息
                '填充Treeview
                '显示
                tvEntList.Nodes.Clear()
                tvEntList.Nodes.Add(FillTree(EntID))            '添加客户端提示
                btnDel.Attributes.Add("onClick", "javascript:return confirm('确认要删除吗?');")
                btnMove.Attributes.Add("onClick", "javascript:return confirm('确认要移动吗?');")
            End If
        End Sub
    Private Function FillTree(ByVal NodeID As String) As TreeNode
            Dim tn As New TreeNode        If EntHasChild(NodeID) = True Then
                '存在子节点
                '取出所有子节点信息()
                Dim Dt As DataTable
                Dt = GetEntChildData(NodeID)            Dim i As Int32
                Dim ChildCount As Int32 = Dt.Rows.Count
                Dim SubNodeTable(ChildCount - 1) As TreeNode            For i = 0 To ChildCount - 1
                    '生成子节点
                    SubNodeTable(i) = FillTree(Dt.Rows(i).Item("fldEntID"))
                    '添加到本节点
                    tn.Nodes.Add(SubNodeTable(i))
                Next
            End If        '获得本节点详细内容
            Dim dtDetail As DataTable
            dtDetail = GetEntNodeDataDetail(NodeID)        tn.ID = dtDetail.Rows(0)("fldEntID").ToString
            tn.Text = tn.ID & " - " & dtDetail.Rows(0)("fldEntName").ToString        Return tn    End Function
      

  7.   

    smile9961(正是江南好风景,落花时节又逢君。) 
    你这是c++的代码吗?
    怎么语法有点奇怪.
     codeangel(-- 与人方便,自已方便 --) 
    我现在问题就是处在递归上,
    希望能帮我看看问题出在那里. kingastar(qingzhu) 
    你说的的确是这样,但是我按你的方法做没有解决问题.谢谢各位,但是问题没有解决.继续讨论啊.
      

  8.   

    http://www.cnblogs.com/goody9807/archive/2005/07/01/184754.html
      

  9.   

    smile9961(正是江南好风景,落花时节又逢君。) 
    你这是c++的代码吗?
    怎么语法有点奇怪.
    ------------------------
    我看你用的是C#,就將我的代碼用轉化工具轉成了C#
    原始的vb代碼如下:
    Private Sub InitTree(ByVal Nds As Microsoft.Web.UI.WebControls.TreeNodeCollection, ByVal parentId As String)
            Dim i As Integer
            Dim tmpNd As TreeNode
            Dim dt As DataSet
            dt = func.GetDataTable("select * from pubSystemTree where F_Parent='" & parentId & "' order by sort")
            For i = 0 To dt.Tables(0).Rows.Count - 1
                tmpNd = New TreeNode
                tmpNd.ID = dt.Tables(0).Rows(i)("F_SysCode").ToString()
                tmpNd.Text = dt.Tables(0).Rows(i)("F_SysName").ToString()
                tmpNd.NodeData = dt.Tables(0).Rows(i)("F_SysCode").ToString()
                tmpNd.Target = dt.Tables(0).Rows(i)("F_Memo").ToString()
                tmpNd.Expanded = True
                Nds.Add(tmpNd)
                InitTree(tmpNd.Nodes, tmpNd.ID)
            Next
        End Sub