以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  在目录树AfterSelectNode事件提示“未将对象引用设置到对象的实例”  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=56315)

--  作者:苍风霁月
--  发布时间:2014/9/3 9:12:00
--  在目录树AfterSelectNode事件提示“未将对象引用设置到对象的实例”

目录树是通过数据表生成的,在用命令增加目录树节点与数据表行后,在目录树AfterSelectNode事件提示“未将对象引用设置到对象的实例”,请问原因及解决办法?谢!


--  作者:Bin
--  发布时间:2014/9/3 9:12:00
--  
AfterSelectNode代码发出来看看
--  作者:苍风霁月
--  发布时间:2014/9/3 9:17:00
--  

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")

If e.node.DataRow("状态") ="0" Then
    Dim Result As DialogResult
    Result = MessageBox.Show("是否激活?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        e.Node.DataRow("状态") ="1"
    Else
        Return
    End If
Else
    Dim nms As New List(of String)
    If e.node.DataRow.IsNull("用户列表") = False Then
        nms.AddRange(e.node.DataRow("用户列表").Split(","))       
        For Each nd As WinForm.TreeNode In trv2.AllNodes
            nd.Checked = nms.Contains(nd.Name)
        Next
    End If
End If


--  作者:有点甜
--  发布时间:2014/9/3 9:20:00
--  

  这句代码明显有错,你用代码新增的节点,是不会绑定表的datarow的

 

e.node.DataRow("状态")


--  作者:Bin
--  发布时间:2014/9/3 9:21:00
--  
可能这里是空值

e.node.DataRow("状态") 


建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,告诉我们运行到哪一行出错,以及错误提示。

--  作者:苍风霁月
--  发布时间:2014/9/3 9:34:00
--  
如何排除目录树中未关联datarow的节点?有办法没?
--  作者:有点甜
--  发布时间:2014/9/3 9:36:00
--  
以下是引用苍风霁月在2014-9-3 9:34:00的发言:
如何排除目录树中未关联datarow的节点?有办法没?

 

If e.Node.DataRow IsNot Nothing Then


--  作者:苍风霁月
--  发布时间:2014/9/3 9:37:00
--  
谢谢,搞定!