Customize the header checkbox behavior in GridViewCheckBoxColumn
Environment
Product Version | Product | Author |
---|---|---|
2019.1.219 | RadGridView for WinForms | Dimitar Karamfilov |
Description
This article describes how you can change the behavior of the header checkbox in the GridViewCheckBoxColumn. This allows to specify which cell should be checked or perform a completely different action when the checkbox state is changed.
Solution
In this example I am using the value in another cell in order to determine which cells should be changed. I am using the ShouldCheckDataRows property to disable the default behavior. In the HeaderCellToggleStateChanged event handler I am changing the value of the cells that meet specific criteria.
Customize the header checkbox behavior
private void RadForm1_Load(object sender, EventArgs e)
{
var checkBoxColumn = radGridView1.Columns[3] as GridViewCheckBoxColumn;
checkBoxColumn.EnableHeaderCheckBox = true;
checkBoxColumn.ShouldCheckDataRows = false;
checkBoxColumn.ReadOnly = true;
radGridView1.HeaderCellToggleStateChanged += RadGridView1_HeaderCellToggleStateChanged;
}
private void RadGridView1_HeaderCellToggleStateChanged(object sender, GridViewHeaderCellEventArgs e)
{
foreach (GridViewDataRowInfo row in radGridView1.Rows)
{
var value = (int)row.Cells[0].Value;
if (value < 50)
{
row.Cells[3].Value = !(bool)row.Cells[3].Value;
}
}
}
Private Sub RadForm1_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim checkBoxColumn = TryCast(radGridView1.Columns(3), GridViewCheckBoxColumn)
checkBoxColumn.EnableHeaderCheckBox = True
checkBoxColumn.ShouldCheckDataRows = False
checkBoxColumn.ReadOnly = True
AddHandler radGridView1.HeaderCellToggleStateChanged, AddressOf RadGridView1_HeaderCellToggleStateChanged
End Sub
Private Sub RadGridView1_HeaderCellToggleStateChanged(ByVal sender As Object, ByVal e As GridViewHeaderCellEventArgs)
For Each row As GridViewDataRowInfo In radGridView1.Rows
Dim value = CInt(Math.Truncate(row.Cells(0).Value))
If value < 50 Then
row.Cells(3).Value = Not CBool(row.Cells(3).Value)
End If
Next row
End Sub