以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 一个被很多人忽略的属性 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44795) |
-- 作者:狐狸爸爸 -- 发布时间:2014/1/9 10:53:00 -- 一个被很多人忽略的属性 很多用户,包括帮助文件,都忽略了一个重要的属性: http://www.foxtable.com/help/topics/2689.htm
例如帮助中的代码:
If e.Node.Level = 1 Then \'如果单击的是第二层节点
完全可以改写为:
If e.Node.Level = 1 Then \'如果单击的是第二层节点 Dim tr As Row = Tables("客户").Current Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow tr("省市") = dr("省市") tr("县市") = dr("县市") tr("区号") = dr("区号") tr("邮编") = dr("邮编") e.Form.DropDownBox.Value = tr("县市") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据. e.Form.DropDownBox.CloseDropdown() End If
简单不伤神。 [此贴子已经被作者于2014-1-9 11:06:09编辑过]
|
-- 作者:lsy -- 发布时间:2014/1/9 11:01:00 -- If e.Node.Level = 1 Then \'如果单击的是第二层节点 Dim ps() As String = e.Node.FullPath.Split("\\") \'这行是多余的,省略此行,代码正常执行. Dim tr As Row = Tables("客户").Current Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow tr("省市") = dr("省市") tr("县市") = dr("县市") tr("区号") = dr("区号") tr("邮编") = dr("邮编") e.Form.DropDownBox.Value = tr("县市") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据. e.Form.DropDownBox.CloseDropdown() End If |
-- 作者:狐狸爸爸 -- 发布时间:2014/1/9 11:05:00 -- 呵呵,收到,复制粘贴的,忘记删除了 |
-- 作者:scott518 -- 发布时间:2014/1/9 14:34:00 -- Case "客户" tr.Nodes.Clear \'清空当前目录树 tr.buildtree(e.Form.name & "_明细","客户|订单编号|顶层编码") tr.Nodes.Insert("显示所有",0) \'最顶端显示 tr.StopRedraw() For Each nd As WinForm.treeNode In tr.AllNodes If nd.Level = 2 Then nd.text = nd.text & "|" & nd.DataRow("品名") Functions.Execute("AddChildren_MPS",nd,dt) End If Next tr.ResumeRedraw() Case "产品编码" tr.Nodes.Clear \'清空当前目录树 tr.buildtree(e.Form.name & "_明细","顶层编码") tr.Nodes.Insert("显示所有",0) \'最顶端显示 tr.StopRedraw() For Each nd As WinForm.treeNode In tr.AllNodes If nd.Level = 0 Then nd.text = nd.text & "|" & nd.DataRow("品名") Functions.Execute("AddChildren_MPS",nd,dt) End If Next tr.ResumeRedraw() 请教我这个如果只用顶层编码单独一列生成0层目录,再执行递归函数查找其所有子件生成目录树为什么总提示出错呢?(注释掉此行运行就没问题)红色那行就是想把顶层编码再显示成编号加上品名好识别。而上面选择客户时顶层编码在第二层,执行就正确。
|
-- 作者:Bin -- 发布时间:2014/1/9 14:54:00 -- 检查你的 函数,是否使用价格的 nd.text 而不是nd.name |
-- 作者:scott518 -- 发布时间:2014/1/9 15:29:00 -- 函数是用的nd.name: Dim nd As WinForm.TreeNode = args(0) Dim dt As DataTable = args(1) Dim drs As List(of DataRow) drs = dt.Select("[父件编码] = \'" & nd.name & "\' and 工序号 is null") For Each dr As DataRow In drs Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("产品编码"),dr("产品编码") & "|" & dr("品名")) Functions.Execute("AddChildren_MPS",cd,dt) Next 现在情况是如果顶层编号设置在第1层以后都可以正确生成目录树,而在0层时只用一列生成目录树就出错,是不是最后那段哪里写错了。谢谢! \'生成目录树 Select Case Cmb1 Case "订单编号" tr.Nodes.Clear \'清空当前目录树 tr.buildtree(e.Form.name & "_明细","订单编号|顶层编码") tr.Nodes.Insert("显示所有",0) \'最顶端显示 tr.StopRedraw() For Each nd As WinForm.treeNode In tr.AllNodes If nd.Level = 1 Then nd.text = nd.text & "|" & nd.DataRow("品名") Functions.Execute("AddChildren_MPS",nd,dt) End If Next tr.ResumeRedraw() Case "客户" tr.Nodes.Clear \'清空当前目录树 tr.buildtree(e.Form.name & "_明细","客户|订单编号|顶层编码") tr.Nodes.Insert("显示所有",0) \'最顶端显示 tr.StopRedraw() For Each nd As WinForm.treeNode In tr.AllNodes If nd.Level = 2 Then nd.text = nd.text & "|" & nd.DataRow("品名") Functions.Execute("AddChildren_MPS",nd,dt) End If Next tr.ResumeRedraw() Case "产品编码" tr.Nodes.Clear \'清空当前目录树 tr.buildtree(e.Form.name & "_明细","顶层编码") tr.Nodes.Insert("显示所有",0) \'最顶端显示 tr.StopRedraw() For Each nd As WinForm.treeNode In tr.AllNodes If nd.Level = 0 Then nd.text = nd.text & "|" & nd.DataRow("品名") Functions.Execute("AddChildren_MPS",nd,dt) End If Next tr.ResumeRedraw() End Select |
-- 作者:scott518 -- 发布时间:2014/1/9 15:47:00 -- 我另外上个例子吧 |
-- 作者:包头123 -- 发布时间:2014/1/9 16:01:00 -- 帮助上就是那么写的,因此,即使是多余的语句,大家也不知道。 |