以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多值字段问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116999) |
-- 作者:13775189031 -- 发布时间:2018/4/4 8:50:00 -- 多值字段问题 请教:某列多值字段选项:A,B,C,D,E,其中勾选了A,B,C三个选项,想实现以下功能: 第一列到第五列为逻辑列,分别对应A到E的值,若勾选A、B、C值则对应的第一列、第二列、第三列逻辑列打勾,若未勾选则逻辑列不打勾 怎么实现? |
-- 作者:有点甜 -- 发布时间:2018/4/4 10:22:00 -- 参考代码
Dim ary1() As String = {"A", "B", "C", "D", "E"} |
-- 作者:13775189031 -- 发布时间:2018/4/4 11:32:00 -- Dim str As String = "A,C,E" 这行是什么意思?为什么只有A、C、E? |
-- 作者:有点甜 -- 发布时间:2018/4/4 12:35:00 -- 如果写到DataColChanged事件,改成
Dim str As String = e.DataRow("第一列") |
-- 作者:13775189031 -- 发布时间:2018/4/10 8:56:00 -- Dim ary1() As String = {"本合同符合国家法律法规,符合公司经营范围", "各项产品要求都有明确的规定", "文字叙述清楚,无含糊不清或矛盾之处", "公司有能力实现产品的技术要求", "能满足合同交货期的规定", "成本费用及付款风险可控", "无特殊要求"} Dim ary2() As String = {"第一列", "第二列", "第三列", "第四列", "第五列", "第六列", "第七列"} If e.DataCol.Name = "事业部评审意见" Then Dim str As String = e.DataRow("事业部评审意见") \'MessageBox.Show("你选择的是" & str & "项.") Dim ary3 = str.split(",") \'MessageBox.Show("你选择的是" & ary3(0) & "项.") For i As Integer = 0 To ary1.length-1 Dim idx As Integer = array.indexof(ary3, ary1(i)) If idx >= 0 Then Tables("合同评审").current(ary2(i)) = True Else Tables("合同评审").current(ary2(i)) = False End If Next Else \'MessageBox.Show("你选择的是" & "项.") End If 请教:程序编完后,第一列和第三列不显示,是什么问题?
|
-- 作者:有点甜 -- 发布时间:2018/4/10 9:04:00 -- 应该是逗号的问题吧?多值字段那里,分割符号,请改成|
http://www.foxtable.com/webhelp/scr/0939.htm
然后修改代码 Dim ary3 = str.split("|") |
-- 作者:13775189031 -- 发布时间:2018/4/10 12:29:00 -- Dim ary1() As String = {"本合同符合国家法律法规,符合公司经营范围", "各项产品要求都有明确的规定", "文字叙述清楚,无含糊不清或矛盾之处", "公司有能力实现产品的技术要求", "能满足合同交货期的规定", "成本费用及付款风险可控", "无特殊要求"} Dim ary2() As String = {"第一列", "第二列", "第三列", "第四列", "第五列", "第六列", "第七列"} If e.DataCol.Name = "事业部评审意见" Then Dim str As String = e.DataRow("事业部评审意见") \'MessageBox.Show("你选择的是" & str & "项.") Dim ary3 = str.split("|") \'MessageBox.Show("你选择的是" & ary3(0) & "项.") For i As Integer = 0 To ary1.length-1 Dim idx As Integer = array.indexof(ary3, ary1(i)) If idx >= 0 Then Tables("合同评审").current(ary2(i)) = True Else Tables("合同评审").current(ary2(i)) = False End If Next Else \'MessageBox.Show("你选择的是" & "项.") End If Dim ary4() As String = {"合同及技术协议", "图纸", "标准", "其他"} Dim ary5() As String = {"第八列", "第九列", "第十列", "第十一列"} If e.DataCol.Name = "评审表附件" Then Dim str As String = e.DataRow("评审表附件") \'MessageBox.Show("你选择的是" & str & "项.") Dim ary6 = str.split(",") \'MessageBox.Show("你选择的是" & ary3(0) & "项.") For i As Integer = 0 To ary1.length-1 Dim idx As Integer = array.indexof(ary6, ary4(i)) If idx >= 0 Then Tables("合同评审").current(ary5(i)) = True Else Tables("合同评审").current(ary5(i)) = False End If Next Else \'MessageBox.Show("你选择的是" & "项.") End If 运行显示.NET Framework 版本:2.0.50727.8762 Foxtable 版本:2018.3.9.1 错误所在事件:表,合同评审,DataColChanged 详细错误信息: 调用的目标发生了异常。 索引超出了数组界限。 哪出了问题? |
-- 作者:13775189031 -- 发布时间:2018/4/10 12:31:00 -- 单独第一个没问题,加上第二段以后,第八到第十一列值显示没问题,但是会有上面的报错! |
-- 作者:13775189031 -- 发布时间:2018/4/10 12:53:00 -- 刚刚解决了!谢谢! |