以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  根据财务数据初始化tree,提示数据转换错误  (http://www.foxtable.com/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