Foxtable(狐表)用户栏目专家坐堂 → 调取生成目录树的数据赋值,提示未引用对象实例


  共有3031人关注过本帖树形打印复制链接

主题:调取生成目录树的数据赋值,提示未引用对象实例

帅哥哟,离线,有人找我吗?
weibu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
调取生成目录树的数据赋值,提示未引用对象实例  发帖心情 Post By:2020/8/29 8:57:00 [只看该作者]

老师,我生成目录树使用一个表中的mid列值作为生成目录树层级,现在下面代码提示未引用对象实例是啥原因?
Dim dr As DataRow = nd.DataRow '获取生成此节点的DataRow
tr("mid") = dr("mid")

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/29 9:01:00 [只看该作者]

贴出生成目录树和点击目录树的完整代码

 回到顶部
帅哥哟,离线,有人找我吗?
weibu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/8/29 15:54:00 [只看该作者]

生成目录树的代码
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("minfor")
tr.StopRedraw()
tr.Nodes.Clear
'tr.Nodes.Add("全部")
For Each dr As DataRow In dt.datarows
    If dr.IsNull("parentid") Then
        nd = tr.Nodes.Add(dr("mid"),dr("mname"))
        Functions.Execute("AddChildren1",nd,dt)
    End If
Next
tr.ResumeRedraw()

点击目录树筛选代码:
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim ids As String
Dim nd As WinForm.TreeNode
Dim pd As WinForm.TreeNode
Dim key As String = e.Node.Name
If key = "全部" Then
    Tables("mframe").Filter = ""
Else
For Each nd In e.node.allNodes '清除子节点的选中标记
    nd.Checked = False
Next
pd = e.Node.ParentNode
Do While pd IsNot Nothing '清除父节点的选中标记
    pd.Checked = False
    pd = pd.ParentNode
Loop
For Each nd In trv.AllNodes
    pd = nd
    Do While pd IsNot Nothing
        If pd.Checked  Then
            If ids > "" Then
                ids= ids &  ","
            End If
            ids = ids & "'" & nd.name & "'"
            Exit Do
        Else
            pd = pd.ParentNode
        End If
    Loop
Next
If ids > "" Then
    Tables("mframe").Filter = "mid In (" & ids & ")"
 End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/29 16:03:00 [只看该作者]

这种手工添加节点的用法是不存在此节点的DataRow的,也就是nd.DataRow是不存在的,只能通过nd.name去表格里查询到对应的DataRow

 回到顶部
帅哥哟,离线,有人找我吗?
weibu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/8/29 16:27:00 [只看该作者]

谢谢老师
[此贴子已经被作者于2020/8/29 16:43:17编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/29 16:41:00 [只看该作者]

那就改为唯一性的字段,比如编号,或者主键列

 回到顶部