Foxtable(狐表)用户栏目专家坐堂 → 如图,备注能按姓名来合并吗?


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

主题:如图,备注能按姓名来合并吗?

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


加好友 发短信
等级:七尾狐 帖子:1777 积分:16791 威望:0 精华:0 注册:2017/6/1 23:12:00
如图,备注能按姓名来合并吗?  发帖心情 Post By:2018/10/18 20:03:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/18 20:21:00 [只看该作者]

必须输入相同的内容,才能合并。

 

不然,就写代码合并,如合并第二列,3、4、5行,如代码

 

Dim tb As Table = Tables("表A")
tb.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
Dim rng As C1.Win.C1FlexGrid.CellRange = tb.Grid.GetCellRange(3, 2, 5, 2)  '从坐标3,2合并到5,2
tb.Grid.MergedRanges.add(rng)


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


加好友 发短信
等级:七尾狐 帖子:1777 积分:16791 威望:0 精华:0 注册:2017/6/1 23:12:00
  发帖心情 Post By:2018/10/18 20:23:00 [只看该作者]

姓名行数不固定啊,怎么写代码?
[此贴子已经被作者于2018/10/18 20:23:59编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/18 20:58:00 [只看该作者]

以下是引用xxfoxtable在2018/10/18 20:23:00的发言:
姓名行数不固定啊,怎么写代码?
[此贴子已经被作者于2018/10/18 20:23:59编辑过]

 

Dim t As Table = Tables("表a")

'取消合并
Dim ls As new List(of object)
For Each r As object In t.Grid.MergedRanges
    ls.add(r)
Next
For Each r As object In ls
    t.Grid.MergedRanges.Remove(r)
Next

'设置合并
Dim i As Integer = t.Cols("第一列").Index
Dim ii As Integer = t.Cols("第二列").Index
Dim top As Integer = 0
For j As Integer = 1 To t.Rows.count-1
    Dim r1 As Row = t.Rows(j-1)
    Dim r2 As Row = t.Rows(j)
    Dim same As Boolean = True
   
    If r2(i) = Nothing OrElse r1(i) <> r2(i) Then
        same = False
    End If
   
    If same = False  Then
        t.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
        Dim rng As C1.Win.C1FlexGrid.CellRange = t.Grid.GetCellRange(top+t.HeaderRows, ii+1, j+t.HeaderRows-1, ii+1)
        t.Grid.MergedRanges.add(rng)
       
        Top = j
    ElseIf j = t.rows.count-1 Then
        Dim rng As C1.Win.C1FlexGrid.CellRange = t.Grid.GetCellRange(top+t.HeaderRows, ii+1, j+t.HeaderRows, ii+1)
        t.Grid.MergedRanges.add(rng)
    End If
Next

 


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


加好友 发短信
等级:七尾狐 帖子:1777 积分:16791 威望:0 精华:0 注册:2017/6/1 23:12:00
  发帖心情 Post By:2018/10/18 23:27:00 [只看该作者]

这个代码是excel合并代码吗?看着象table控件合并代码呢?一楼是excel模板打印出来的截图
[此贴子已经被作者于2018/10/18 23:27:28编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/19 8:36:00 [只看该作者]

以下是引用xxfoxtable在2018/10/18 23:27:00的发言:
这个代码是excel合并代码吗?看着象table控件合并代码呢?一楼是excel模板打印出来的截图
[此贴子已经被作者于2018/10/18 23:27:28编辑过]

 

打印前执行代码

 

Dim dt As DataTable = DataTables("表A")
For Each xm As String In dt.GetValues("姓名")
    Dim bzs As String = dt.GetComboListString("备注", "姓名='" & xm & "'")
    dt.ReplaceFor("备注", bzs,  "姓名='" & xm & "'")
Next


 回到顶部