Telerik 显示/隐藏混合了隐藏列和显示列的列组

Telerik 显示/隐藏混合了隐藏列和显示列的列组,telerik,radgrid,Telerik,Radgrid,我有一个RadGrid,其中包含编程生成的列,包括数量可变的列组。每个列组包含四列,两列显示,两列不显示 在RadGrid上方,我有一系列复选框,每个列组对应一个复选框。目标是让用户根据他们希望看到的列选中或取消选中复选框。当前,我正在使用radgrid.columns.FindByUniqueName(“columnName”).Display更改复选框的选中值时设置列的显示属性。但是,无法通过这种方式访问列组本身。实际上,列组在其所有子列消失时消失,但在显示其子列时不会重新出现,从而导致标题

我有一个RadGrid,其中包含编程生成的列,包括数量可变的列组。每个列组包含四列,两列显示,两列不显示

在RadGrid上方,我有一系列复选框,每个列组对应一个复选框。目标是让用户根据他们希望看到的列选中或取消选中复选框。当前,我正在使用
radgrid.columns.FindByUniqueName(“columnName”).Display更改复选框的选中值时设置列的显示属性。但是,无法通过这种方式访问列组本身。实际上,列组在其所有子列消失时消失,但在显示其子列时不会重新出现,从而导致标题未对齐

相关代码:

'Defining the grid
Dim radgrid As RadGrid
radgrid = New RadGrid()

Dim i as Integer = 0
For Each r As DataRow In subTable.Rows
    Dim colGroup As GridColumnGroup = New GridGroupColumn()
    radgrid.MasterTableView.ColumnGroups.Add(colGroup)
    colGroup.HeaderText = r.Item("Name")
    colGroup.Name = "colGroup" & i

    Dim colID As GridBoundColumn = New GridBoundColumn()
    radgrid.MasterTableView.Columns.Add(colID)
    colID.ColumnGroupName = "colGroup" & i
    colID.DataField = "id" & i
    colID.HeaderText = "ID"
    colID.UniqueName = "id" & i
    colID.Display = False

    Dim colScore As GridBoundColumn = New GridBoundColumn()
    radgrid.MasterTableView.Columns.Add(colScore)
    colScore.ColumnGroupName = "colGroup" & i
    colScore.DataField = "score" & i
    colScore.HeaderText = "Score"
    colScore.UniqueName = "score" & i

    i += 1
Next

'Checkbox CheckedChanged sub
If selectedButton.Checked = True Then
    radgrid.Columns.FindByUniqueName("colScore" & selectedButton.Value.ToString()).Display = True
Else
    radgrid.Columns.FindByUniqueName("colScore" & selectedButton.Value.ToString()).Display = False
End If
理想情况下,我希望执行类似于
radgrid.MasterTableView.ColumnGroups.FindGroupByName(“colGroup”&selectedButton.Value.ToString()).Display=False
的操作,但是没有
Display
属性,并且
Visible
属性是只读的。在将列设置为显示后,我还尝试重新设置列的
ColumnGroupName
,但这也不起作用


我猜我有隐藏列这一事实使得这比它应该的更复杂,但是有没有办法让它与隐藏列一起工作呢?

当我在处理一个不相关的问题时,这个解决方案实际上出现了

更改
Display
属性的值后调用
radgrid.Rebind()
,将导致组列标题消失并根据需要重新显示

Protected Sub button_CheckChanged()
    If selectedButton.Checked = True Then
        radgrid.Columns.FindByUniqueName("colScore" & selectedButton.Value.ToString()).Display = True
    Else
        radgrid.Columns.FindByUniqueName("colScore" & selectedButton.Value.ToString()).Display = False
    End If
    radgrid.Rebind()
End Sub