c# - dataGridView_CellClick 事件
问题描述
所以我正在开发这个 Windows 窗体应用程序,让用户从DataGridView8中进行选择。DataGridView8有一个ButtonColumn ,因此当您单击按钮时,有关按钮标题的信息将出现在另一个DataGridView9上。它链接到SQL-Server,并且已经有一个完整的数据库。我只是坚持如何使 ButtonColumn 像单击它一样工作,其他项目会出现在DataGridView9上。
这是为dataGridView8_CellClick
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。
推荐阅读
- python - Visual Studio 2019(不是 VS Code)显示不完整的 python 文档
- java - 位移,得到不正确的值
- node.js - Vite 上的 Docker-compose
- javascript - 全日历 window.print();
- javascript - 我可以在 FlatList 中按最新顺序列出数组数据吗?
- c++ - 是否可以在 C/C++ 中从不使用标头保护?如果是这样,这种方法有什么优势吗?
- icloud - 有没有办法将 Google Cloud 文件夹同步到 iCloud 文件夹?
- python - AttributeError:模块 'cv2' 没有属性 'VideoCapture'
- django - /account/reset_password/ 处的 OSError 以及 /student/register/ 处的 OSError [Errno 99] 无法分配请求的地址
- fastlane - 找不到通道“ios 调试”。可用通道:ios beta