Foxtable(狐表)用户栏目专家坐堂 → 根据财务数据初始化tree,提示数据转换错误


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

主题:根据财务数据初始化tree,提示数据转换错误

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


加好友 发短信
等级:二尾狐 帖子:594 积分:4030 威望:0 精华:0 注册:2015/3/10 13:25:00
根据财务数据初始化tree,提示数据转换错误  发帖心情 Post By:2020/2/19 17:08:00 [只看该作者]

错误提示-------------------------------------------------
.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




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


加好友 发短信
等级:超级版主 帖子:106648 积分:542423 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:594 积分:4030 威望:0 精华:0 注册:2015/3/10 13:25:00
  发帖心情 Post By: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 中显示这一行的内容

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


加好友 发短信
等级:超级版主 帖子:106648 积分:542423 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部