以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 调取生成目录树的数据赋值,提示未引用对象实例 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=153960) |
-- 作者:weibu -- 发布时间:2020/8/29 8:57:00 -- 调取生成目录树的数据赋值,提示未引用对象实例 老师,我生成目录树使用一个表中的mid列值作为生成目录树层级,现在下面代码提示未引用对象实例是啥原因? Dim dr As DataRow = nd.DataRow \'获取生成此节点的DataRow tr("mid") = dr("mid")
|
-- 作者:有点蓝 -- 发布时间:2020/8/29 9:01:00 -- 贴出生成目录树和点击目录树的完整代码 |
-- 作者:weibu -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2020/8/29 16:03:00 -- 这种手工添加节点的用法是不存在此节点的DataRow的,也就是nd.DataRow是不存在的,只能通过nd.name去表格里查询到对应的DataRow |
-- 作者:weibu -- 发布时间:2020/8/29 16:27:00 -- 谢谢老师 [此贴子已经被作者于2020/8/29 16:43:17编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/8/29 16:41:00 -- 那就改为唯一性的字段,比如编号,或者主键列 |