设计树的数据库结构时,给每个节点加上父节点id字段
遍历添加

解决方案 »

  1.   

    我曾作过用sql语句和多个from可实现。
    例如:
    1:在index.aspx中:
    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
            Response.Redirect("./frmMain.aspx")
    End Sub
    2:在frmMain.aspx中先设treeview的treenodesrc设为frmTreeDowith.aspx Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            Dim conEquipment As System.Data.SqlClient.SqlConnection
            Dim cmdEquipment As System.Data.SqlClient.SqlCommand
            Dim dstEquipment As DataSet
            Dim strQuery As String
            Dim strIni As String’要对该变量赋值
      
            conEquipment = New System.Data.SqlClient.SqlConnection("user id=sa;password=xxxxxxx;initial catalog=xxxxxx;data source=xxxx;Connect Timeout=30")
            strQuery = "select Name as Text,'frmTreeDowith1.aspx?intID='+ IDID" & _
            " as TreeNodeSrc  from Equipment as TreeNode where SensorType=@SensorType and usermange=@usermange and len(ID)>12 for XML auto,XMLDATA"
            cmdEquipment = New SqlClient.SqlCommand(strQuery, conEquipment)
            cmdEquipment.Parameters.Add(New SqlClient.SqlParameter("@SensorType", CInt(Request.QueryString("0"))))
            cmdEquipment.Parameters.Add(New SqlClient.SqlParameter("@usermange", Trim(strIni)))
            conEquipment.Open()
            dstEquipment = New DataSet()
            dstEquipment.ReadXml(cmdEquipment.ExecuteXmlReader, XmlReadMode.Fragment)
            dstEquipment.DataSetName = "TREENODES"
            dstEquipment.WriteXml(Response.OutputStream)        conEquipment.Close()
        End Sub在frmTreeDowith1.aspx中写
     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            Dim conEquipment As System.Data.SqlClient.SqlConnection
            Dim cmdEquipment As System.Data.SqlClient.SqlCommand
            Dim dstEquipment As DataSet
            Dim strQuery As String
            Dim strIni As String’要对该变量赋值      conEquipment = New System.Data.SqlClient.SqlConnection("user id=sa;password=xxxxxxx;initial catalog=xxxxxx;data source=xxxx;Connect Timeout=30")
                  strQuery = "select Name as Text,'frmTreeDowith2.aspx?intJTID='+ IDID" & _
            " as TreeNodeSrc   from Equipment as TreeNode  where upperid=@upperid  and usermange=@usermange and len(ID)>12  for XML auto,XMLDATA"
            cmdEquipment = New SqlClient.SqlCommand(strQuery, conEquipment)
            cmdEquipment.Parameters.Add(New SqlClient.SqlParameter("@upperid", Request.QueryString("intID")))
            cmdEquipment.Parameters.Add(New SqlClient.SqlParameter("@usermange", Trim(strIni)))        conEquipment.Open()        dstEquipment = New DataSet()        dstEquipment.ReadXml(cmdEquipment.ExecuteXmlReader, XmlReadMode.Fragment)
            dstEquipment.DataSetName = "TREENODES"
            dstEquipment.WriteXml(Response.OutputStream)
            conEquipment.Close()
        End Sub在frmTreeDowith2.aspx中
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim conEquipment As System.Data.SqlClient.SqlConnection
            Dim cmdEquipment As System.Data.SqlClient.SqlCommand
            Dim dstEquipment As DataSet
            Dim strQuery As String
            Dim strIni As String’要对该变量赋值
       conEquipment = New System.Data.SqlClient.SqlConnection("user id=sa;password=xxxxxxx;initial catalog=xxxxxx;data source=xxxx;Connect Timeout=30")        strQuery = "select Name as Text  from Equipment as TreeNode  where upperid=@upperid  and usermange='" & strIni & "' and len(ID)>12   for XML auto,XMLDATA"
            cmdEquipment = New SqlClient.SqlCommand(strQuery, conEquipment)
            cmdEquipment.Parameters.Add(New SqlClient.SqlParameter("@upperid", Request.QueryString("intJTID")))
            cmdEquipment.Parameters.Add(New SqlClient.SqlParameter("@usermange", Trim(strIni)))        conEquipment.Open()
            dstEquipment = New DataSet()
            dstEquipment.ReadXml(cmdEquipment.ExecuteXmlReader, XmlReadMode.Fragment)
            dstEquipment.DataSetName = "TREENODES"
            dstEquipment.WriteXml(Response.OutputStream)
            conEquipment.Close()
        End Sub
    这样即可出现四层的树型数据浏览需5层时再添加窗体。你可以试一下,数据库为SQL,表结构在读程序中你可以推出来。只需建好库把上述程序copy到你开发的系统即可看到结果,别忘添加些数据向你的数据表中。挺复杂的,涉及到xml一些概念,你有更简便的方法吗?联系方式:Email:[email protected]