以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]动态绑定的记录窗口 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=162112) |
-- 作者:2425004926 -- 发布时间:2021/4/6 12:56:00 -- [求助]动态绑定的记录窗口 动态绑定的记录窗口,我用 “任务设置”表 “记录窗口”列 动态设置记录窗口要显示的列及高度,当“记录窗口”列为空时就显示全部列,高度也为1,可总是出错,请老师帮助 试验:当点击任务“表A”或“表B”,再点击“表C"就会出错 Dim dt1 As Table = Tables(e.Form.name & "_table1")
Dim dr0 As DataRow = DataTables("任务设置").find("任务标题 = \'" & e.link.text & "\'") dt1.DataSource = DataTables(e.link.name) \'动态绑定表 \'记录窗口 Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid1") \'记录窗口 \'rgd.Table = dt1 ‘放在这里出错 If dr0.IsNull("记录窗口") = False Then Dim sz() As String = dr0("记录窗口").split("|") \'得到要显示的列 Dim xt2 As String For i As Integer = 0 To sz.Length -1 If i Mod 2 = 0 Then xt2 = xt2 & "|" & sz(i) End If Next xt2 = xt2.Trim("|") rgd.Columns = xt2 \'批量设置要显示的列 \'遍历要显示的高度 For i As Integer = 0 To sz.Length -1 If i Mod 2 = 0 Then dt1.Cols(sz(i)).RecordRowHeight = Val(sz(i+1)) \'显示高度 End If Next End If rgd.Table = dt1 ’放在这里也出错 rgd.Build() \'重新生成记录窗口 |
-- 作者:有点蓝 -- 发布时间:2021/4/6 14:01:00 -- 只要设置了一次显示列rgd.Columns,那么换表后也必须重新设置显示列rgd.Columns。表C没有设置显示列rgd.Columns所以出错 |
-- 作者:2425004926 -- 发布时间:2021/4/6 14:19:00 -- 谢谢!根据老师的指点,我重新改动了一下,OK Dim dt1 As Table = Tables(e.Form.name & "_table1")
Dim dr0 As DataRow = DataTables("任务设置").find("任务标题 = \'" & e.link.text & "\'") dt1.DataSource = DataTables(e.link.name) \'动态绑定表 rgd.Table = dt1 Dim xt2 As String If dr0.IsNull("记录窗口") Then \'如果不是空值,部分显示,如果为空,显示全部列 For Each dc As DataCol In dt1.DataTable.DataCols xt2 = xt2 & "|" & dc.name Next xt2 = xt2.Trim("|") rgd.Columns = xt2 \'批量设置要显示的列 Else Dim sz() As String = dr0("记录窗口").split("|") \'得到要显示的列 For i As Integer = 0 To sz.Length -1 If i Mod 2 = 0 Then xt2 = xt2 & "|" & sz(i) End If Next xt2 = xt2.Trim("|") rgd.Columns = xt2 \'批量设置要显示的列 \'遍历要显示的高度 For i As Integer = 0 To sz.Length -1 If i Mod 2 = 0 Then dt1.Cols(sz(i)).RecordRowHeight = Val(sz(i+1)) \'显示高度 End If Next End If rgd.Build() \'重新生成记录窗口 |