代码改变世界

我最近写的DataGrid合并/删除相同列通用函数,跟大家分享

  灵感之源  阅读(2431)  评论(2编辑  收藏  举报

鉴于相当多页面都要做合并列,我最近写了DataGrid合并/删除相同列通用函数,跟大家分享。
    Public Shared Sub DBGridSpanCell(ByRef dgdData As DataGrid, _
                                     ByVal intColumnItem As Integer, _
                                     ByVal intColumnStart As Integer, _
                                     ByVal intColumnEnd As Integer, _
                                     Optional ByVal intSpan As Integer = 2)
        '名称:DBGridSpanCell
        '功能:合并/删除相同的项目名
        '作者:dzt
        '创建:2004/1/1
        '修改:2004/1/1
        '参数:dgdData:DataGrid对象
        '      intColumnItem:要合并列
        '      intColumnStart:合并起始列
        '      intColumnEnd:合并结束列
        '      intSpan:跨行数
        '返回:成功,True,反之,False
        '说明:

        Dim i As Integer
        Dim o_intCols As Integer
        Dim iSpan As Integer = intSpan '跨行数
        Dim iRow As Integer = 0 '开始的跨行
        Dim sItem As String
        Dim sColumnText As String
        Dim ColumnType As Type
        Dim ctl As System.Web.UI.Control

        With dgdData.Items
            For i = 0 To .Count - 1
                With .Item(i)
                    ColumnType = dgdData.Columns(intColumnItem).GetType
                    '模板列,label
                    If ColumnType Is GetType(TemplateColumn) Then
                        For Each ctl In dgdData.Items(i).Cells(intColumnItem).Controls
                            If ctl.GetType Is GetType(Label) Then
                                sColumnText = CType(ctl, Label).Text
                                Exit For
                            End If
                        Next
                    Else
                        sColumnText = .Cells(intColumnItem).Text
                    End If

                    ' If .Cells(intColumnItem).Text = sItem Then
                    If sColumnText = sItem Then
                        For o_intCols = intColumnStart To intColumnEnd
                            dgdData.Items(iRow).Cells(o_intCols).RowSpan = iSpan
                            .Cells(o_intCols).Visible = False
                        Next

                        iSpan += 1
                    Else
                        iRow = i
                        iSpan = intSpan
                        'sItem = .Cells(intColumnItem).Text
                        sItem = sColumnText
                    End If
                End With
            Next
        End With
    End Sub

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示