gpt4 book ai didi

c# - 如何在 Winform 中更新 dataGridView 行的值

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:50 28 4
gpt4 key购买 nike

我有一个 dataGridview,它的第一列是 Checkbox。现在根据我的要求,我想在选择复选框时更新 dataGridView 行的值。我希望它就像为特定行单击复选框一样,该行应该变成可编辑的,在那里输入的任何内容都应该在点击更新按钮时更新。

这是我为 gridview 和 Checkbox 编写的代码..

    private void btn_load_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Select", System.Type.GetType("System.Boolean"));
dt.Columns.Add("UserName");
dt.Columns.Add("EmpID");

DataRow dr;

//Connection lines
connection.Open();
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
dr = dt.NewRow();
dr["Select"] = false;
dr["UserName"] = reader["UserName"].ToString();
dr["EmpID"] = reader["EmpID"].ToString();

dt.Rows.Add(dr);
}
}
}

dataGridView1.AllowUserToAddRows = true;
dataGridView1.AllowUserToDeleteRows = true;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

dataGridView1.DataSource = dt;
}

请帮助我。提前致谢..

最佳答案

首先要做的是确保 GridView 中唯一可编辑的列是带有复选框的列。因此,在您完成将数据加载到网格后,需要添加:

foreach (DataGridViewColumn dc in dataGridView1.Columns)
{
if (dc.Index.Equals(0))
{
dc.ReadOnly = false;
}
else
{
dc.ReadOnly = true;
}
}

这只是将除第一列之外的所有列设置为只读。

现在您有了列并且可以单击复选框,我们需要以某种方式处理复选框状态的更改。现在,不管您是否相信,为了使其正常工作,我们需要处理两个事件。这是有充分理由的。您会看到,如果我们为包含复选框的单元格处理 CellValueChanged 事件,它不会触发,直到用户在单击它后离开该单元格。这被认为是编辑单元格的正式结束。当复选框有问题时,那当然不会做,因为我们需要在单击事件后立即处理该事件。为此,我们将处理第二个事件 - CellMouseUp,并在该处理程序中强制完成编辑。它应该看起来像这样:

private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex != -1)
{
dataGridView1.EndEdit();
}
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex != -1)
{
foreach (DataGridViewColumn dc in dataGridView1.Columns)
{
if (!dc.Index.Equals(0))
{
dc.ReadOnly =
!(bool)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
}

}
}
}

关于c# - 如何在 Winform 中更新 dataGridView 行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25103863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com