以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 根据财务数据初始化tree,提示数据转换错误 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146234) |
-- 作者:a937775799 -- 发布时间:2020/2/19 17:08:00 -- 根据财务数据初始化tree,提示数据转换错误 错误提示------------------------------------------------- .NET Framework 版本:4.0.30319.34209 Foxtable 版本:2020.1.19.19 错误所在事件:自定义函数财务科目树生成 详细错误信息: 调用的目标发生了异常。 无法将类型为“Foxtable.WinForm.TreeNode”的对象强制转换为类型“System.Collections.Generic.List`1[Foxtable.WinForm.TreeNode]”。 载入窗口后代码-------------------------------------------- Dim tr As WinForm.TreeView = e.Form.Controls("树") Dim l As List(of String) = DataTables("会计科目表").GetValues("科目大类",,"科目大类") For Each s As String In l tr.Nodes.Add(s , s ) Next Functions.Execute("财务科目树生成", tr.AllNodes , DataTables("会计科目表"),"级码" ) 自定义函数-------------------------------------------------------------------- Dim tr_nd As List(of Foxtable.WinForm.TreeNode) = args(0) Dim dt As DataTable = args(1) Dim cn As String = args(2) For Each n As Foxtable.WinForm.TreeNode In tr_nd Dim ls As List(of DataRow) = dt.Select("[" & cn & "] like \'" & n.Name & "\\%\'" ,cn ) For Each r As DataRow In ls Functions.Execute("财务科目树生成", n.Nodes.Add( r("科目代码") , r("科目名称") ) ,dt,cn ) Next Next |
-- 作者:有点蓝 -- 发布时间:2020/2/19 17:15:00 -- 自定义函数-------------------------------------------------------------------- Dim tr_nd As WinForm.TreeNode = args(0) Dim dt As DataTable = args(1) Dim cn As String = args(2) Dim ls As List(of DataRow) = dt.Select("[" & cn & "] like \'" & tr_nd.Name & "\\%\'" ,cn ) For Each r As DataRow In ls Functions.Execute("财务科目树生成", tr_nd.Nodes.Add( r("科目代码") , r("科目名称") ) ,dt,cn ) Next 载入窗口后代码- Dim tr As WinForm.TreeView = e.Form.Controls("树") Dim l As List(of String) = DataTables("会计科目表").GetValues("科目大类",,"科目大类") For Each s As String In l Functions.Execute("财务科目树生成", tr.Nodes.Add(s , s ) , DataTables("会计科目表"),"级码" ) Next |
-- 作者:a937775799 -- 发布时间:2020/2/19 18:16:00 -- 还有个问题我在树的AfterSelectNode中 Dim rg As WinForm.RecordGrid = e.Form.Controls("rg") MessageBox.Show( e.Node.Name ) ‘’‘’可以得到数据 MessageBox.Show( e.Node.DataRow("科目名称") ) ‘’‘’‘’得不到数据 Tables( e.Form.TableName ).Position = Tables( e.Form.TableName ).FindRow( e.Node.DataRow ) 我想实现我点击对应的内容在边上的RecordGrid 中显示这一行的内容 |
-- 作者:有点蓝 -- 发布时间:2020/2/20 8:44:00 -- 手工生成的节点是没有e.Node.DataRow属性的。 dim idx as integer = Tables( e.Form.TableName ).FindRow( "科目名称=\'" & e.Node.Name & "\'" ) if idx > -1 then \'改添加的判断还是要添加的,省代码不是这样省的,不然一旦查不到数据,可能会有一些莫名其妙的问题 Tables( e.Form.TableName ).Position = idx end if
|