以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]生成树项目代码出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=12956)

--  作者:wlxzl
--  发布时间:2011/9/22 9:33:00
--  [求助]生成树项目代码出错

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dic As new Dictionary(Of String,Winform.TreeNode)
Dim nd As WinForm.TreeNode
Dim pd As WinForm.TreeNode
Dim cmd As New SQLCommand
Dim drs As DataTable
cmd.CommandText = "SELECT DISTINCT 编码,名称,上级编码 From {组织机构}"
drs = cmd.ExecuteReader
For Each dr As DataRow In drs
    If dr.IsNull("上级编码") = False Then
        If dic.ContainsKey(dr("上级编码")) Then
            pd = dic(dr("上级编码"))
            nd = pd.Nodes.add(dr("编码"),dr("编码")+dr("名称"))
            dic.add(dr("编码"),nd)
        End If
    Else
        nd = trv.Nodes.add(dr("编码"),dr("名称"))
        dic.add(dr("编码"),nd)
    End If
    If dr("分支机构") = True
        nd.BackColor= color.Gainsboro
        nd.ForeColor = color.white
    End If
Next

 

保存代码下出现如下提示:

编译错误:expression is of type \'datatable\',which is not a collection type.

错误代码:for each dr as datarow in drs

请各位大师帮看看,是怎么回事呀?


--  作者:狐狸爸爸
--  发布时间:2011/9/22 9:39:00
--  
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dic As new Dictionary(Of String,Winform.TreeNode)
Dim nd As WinForm.TreeNode
Dim pd As WinForm.TreeNode
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT DISTINCT 编码,名称,上级编码 From {组织机构}"
dt = cmd.ExecuteReader
For Each dr As DataRow In dt.DataRows
    If dr.IsNull("上级编码") = False Then
        If dic.ContainsKey(dr("上级编码")) Then
            pd = dic(dr("上级编码"))
            nd = pd.Nodes.add(dr("编码"),dr("编码")+dr("名称"))
            dic.add(dr("编码"),nd)
        End If
    Else
        nd = trv.Nodes.add(dr("编码"),dr("名称"))
        dic.add(dr("编码"),nd)
    End If
    If dr("分支机构") = True
        nd.BackColor= color.Gainsboro
        nd.ForeColor = color.white
    End If
Next

--  作者:wlxzl
--  发布时间:2011/9/22 12:33:00
--  

谢谢!

狐爸,对原数据作了修改或删除,如何重新刷新树,按新的数据生成树目录呀?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


--  作者:mr725
--  发布时间:2011/9/22 12:53:00
--  

重新执行原代码呀。


--  作者:wlxzl
--  发布时间:2011/9/22 13:28:00
--  

明白,谢谢


--  作者:狐狸爸爸
--  发布时间:2011/9/22 14:17:00
--  

也可以看看这个:

 

http://www.foxtable.com/help/topics/2350.htm

 


--  作者:wlxzl
--  发布时间:2011/9/23 12:41:00
--  

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree("行政区域","省市|县市")

 

狐爸,按上面两条刷树不能实现,你看要怎么改呀。


--  作者:狐狸爸爸
--  发布时间:2011/9/23 14:07:00
--  
另外加个刷新按钮就行