刷新数据 c# 后,如何在数据网格视图上取消标记标题复选框? 选择



>标题复选框 选中复选框列中的所有复选框。选中标题复选框后,当数据刷新时,它仍显示为标记在其上。 单击"确定"按钮时,我有以下代码,它会在带有标题复选框的数据网格视图中加载数据,并在每行中加载所有复选框。现在,选中选中所有行中所有复选框的标题复选框。然后,再次单击"确定"按钮,它会重新加载数据,但标题复选框上的复选标记仍然显示而不是未选中。

private void buttonOk_Click(object sender, EventArgs e)
{
LoadDataGridView();
CheckBox ckBoxHeader = new CheckBox();
//Get the column header cell bounds
Rectangle rect = datagridview1.GetCellDisplayRectangle(0, -1, true);
rect.Y = 3;
//align header check box in the middle center at rect.X = 82
rect.X = (rect.Location.X + (rect.Width / 2)) - 10 ;
ckBoxHeader.Size = new Size(18, 18);
//Change the location of the CheckBox to make it stay on the header
ckBoxHeader.Location = rect.Location;
datagridview1.Columns[0].Frozen = true;
ckBoxHeader.CheckedChanged += ckBoxHeader_CheckedChanged;
//Add the CheckBox into the DataGridView
datagridview1.Controls.Add(ckBoxHeader);
}

private void ckBoxHeader_CheckedChanged(object sender, EventArgs e)
{
for (int j = 0; j <= datagridview1.RowCount - 1; j++)
{
datagridview1[0, j].Value = ((CheckBox)sender).Checked;
}
datagridview1.EndEdit();
}

它解决了取消选择标题复选框的问题。上面的代码应该重写如下,以便标头CheckBox.Checked = false;要工作: 加载事件代码 -

private void Form1_Load(object sender, EventArgs e)
{
addHeaderCheckBox();
changeDataGridViewColumnReadonly();
datagridview1.Columns[0].Frozen = true;            
}

加载数据网格视图方法代码 -

private void LoadDataGridView()
{
DataTable dt = new DataTable();
string WhereClause = " WHERE NO LIKE '" + textBoxNumber.Text.ToString().Substring(0,12) + "%' AND (DATE_TIME_START BETWEEN " + General.BuildOraDateString(dateTimePickerStart.Value) + " AND " + General.BuildOraDateString(dateTimePickerEnd.Value) + ") AND STATUS_IND = 'ST' ";
dt = Unit.GetData(WhereClause);
this.datagridview1.Refresh();
this.datagridview1.DataSource = dt;
headerCheckBox.Checked = false;
headerCheckBox.MouseClick += new 
MouseEventHandler(headerCheckBox_MouseClick);
datagridview1.CellValueChanged +=
new DataGridViewCellEventHandler(datagridview1_CellValueChanged);
datagridview1.CurrentCellDirtyStateChanged +=
new EventHandler(datagridview1_CurrentCellDirtyStateChanged);
datagridview1.CellPainting +=
new 
DataGridViewCellPaintingEventHandler(datagridview1_CellPainting);
}

确定按钮单击事件-

private void buttonOk_Click(object sender, EventArgs e)
{
LoadDataGridView();
totalCheckBoxes = dgvBaleDisposition.RowCount;
}

最新更新