C# dataGridView\u CellClick事件
因此,我正在开发这个windows窗体应用程序,让用户从DataGridView8中进行选择。DataGridView8有一个ButtonColumn,因此当您单击按钮时,按钮中的标题信息将出现在另一个DataGridView9上。它链接到SQL Server,并且已经有一个完整的数据库。我只是被困在如何使ButtonColumn工作上,就像我单击它一样,另一个项目出现在DataGridView9上 这是用于C# dataGridView\u CellClick事件,c#,winforms,datagridview,C#,Winforms,Datagridview,因此,我正在开发这个windows窗体应用程序,让用户从DataGridView8中进行选择。DataGridView8有一个ButtonColumn,因此当您单击按钮时,按钮中的标题信息将出现在另一个DataGridView9上。它链接到SQL Server,并且已经有一个完整的数据库。我只是被困在如何使ButtonColumn工作上,就像我单击它一样,另一个项目出现在DataGridView9上 这是用于dataGridView8\u单元单击的事件 private void
dataGridView8\u单元单击的事件
private void Form2_Load(object sender, EventArgs e)
{
DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn();
buttonColumn.Text = "id_fil";
buttonColumn.Name = "id_fil1";
buttonColumn.DataPropertyName = "id_fil";
dataGridView8.Columns.Add(
dataGridView8.Columns.Add("id", "id_fil");
dataGridView8.Columns.Add("nom", "nom_fil");
}
private void dataGridView8_CellClick(object sender, DataGridViewCellEventArgs e)
{
var senderGrid = (DataGridView)sender;
if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
e.RowIndex >= 0)
{
cnx.Open();
cmd = new SqlCommand("select nom_module from module where id_module ='" + e.ColumnIndex +"'", cnx);
dr = cmd.ExecuteReader();
while (dr.Read())
{
dataGridView9.Rows.Add(dr[2]);
}
dr.Close();
cnx.Close();
}
}
虽然不太详细,但它似乎工作正常,并显示了我从数据库中需要的项目,但ButtonColumn是我不知道如何处理的…您可以通过以下方式查看是否单击了按钮栏:
if(e.SelectedColumn == (your column index from 0))
或该行:
e.SelectedRow
如果datagridview9绑定到数据集,则不能更改其值(行)。在这种情况下,必须解除绑定并更改其值,否则最好编写整个c代码来填充datagridview