To reproduce:
public Form1()
{
InitializeComponent();
GridViewCheckBoxColumn checkBoxColumn = new GridViewCheckBoxColumn("Select");
checkBoxColumn.EnableHeaderCheckBox = true;
radGridView1.MasterTemplate.Columns.Insert(0, checkBoxColumn);
for (int i = 0; i < 10; i++)
{
this.radGridView1.Rows.Add(false);
}
this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.MultiSelect = true;
this.radGridView1.HeaderCellToggleStateChanged += radGridView1_HeaderCellToggleStateChanged;
}
private void radGridView1_HeaderCellToggleStateChanged(object sender, GridViewHeaderCellEventArgs e)
{
if (e.State.ToString() == "On")
this.radGridView1.SelectAll();
else
this.radGridView1.ClearSelection();
}
Workaround 1:
private void radGridView1_HeaderCellToggleStateChanged(object sender, GridViewHeaderCellEventArgs e)
{
bool selected = e.State.ToString() == "On";
foreach (GridViewRowInfo r in this.radGridView1.Rows)
{
r.IsSelected = selected;
}
}
Workaround 2:
private void radGridView1_MouseUp(object sender, MouseEventArgs e)
{
RadCheckBoxElement el = this.radGridView1.ElementTree.GetElementAtPoint(e.Location) as RadCheckBoxElement;
if (el!=null)
{
GridCheckBoxHeaderCellElement headerCell = el.Parent as GridCheckBoxHeaderCellElement;
bool selected = el.ToggleState == Telerik.WinControls.Enumerations.ToggleState.On;
if (headerCell!=null)
{
if (selected)
{
this.radGridView1.SelectAll();
}
else
{
this.radGridView1.ClearSelection();
}
}
}
}