Foxtable(狐表)用户栏目专家坐堂 → [求助]动态绑定的记录窗口


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

主题:[求助]动态绑定的记录窗口

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


加好友 发短信
等级:三尾狐 帖子:712 积分:5547 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]动态绑定的记录窗口  发帖心情 Post By:2021/4/6 12:56:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:记录窗口行高测试.rar



动态绑定的记录窗口,我用      “任务设置”表      “记录窗口”列     动态设置记录窗口要显示的列及高度,当“记录窗口”列为空时就显示全部列,高度也为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() '重新生成记录窗口

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/6 14:01:00 [只看该作者]

只要设置了一次显示列rgd.Columns,那么换表后也必须重新设置显示列rgd.Columns。表C没有设置显示列rgd.Columns所以出错

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5547 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By: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() '重新生成记录窗口

 回到顶部