我有一个带有以编程方式生成的列的 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
在将它们设置为显示后重新设置列,但这也不起作用。
我猜我有隐藏的列是什么让这比它应该的更复杂,但是有没有办法让它与隐藏的列一起工作?