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