选择按钮被单击的DataGridView的行
本文关键字:DataGridView 的行 单击 按钮 选择 | 更新日期: 2023-09-27 18:19:20
基本上我的问题是我的代码似乎跳过了foreach循环,我的目标是从同一行获得按钮点击上的行值,这是我到目前为止的代码:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
var senderGrid = (DataGridView)sender;
if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
e.RowIndex >= 0)
{
string userID;
string Monday;
string Tuesday;
string Wednesday;
string Thursday;
string Friday;
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
userID = row.Cells[0].Value.ToString();
Monday = row.Cells[1].Value.ToString();
Tuesday = row.Cells[2].Value.ToString();
Wednesday = row.Cells[3].Value.ToString();
Thursday = row.Cells[4].Value.ToString();
Friday = row.Cells[5].Value.ToString();
dbHandler objDBHandler = new dbHandler();
objDBHandler.writeDB("INSERT INTO [OfficeCalendar].[dbo].[DayData]([UserID],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday]) VALUES ('" + userID + "','" + Monday + "','" + Tuesday + "','" + Wednesday + "','" + Thursday + "','" + Friday + "');", "byron");
}
}
}
我修改了自己的问题,
将DataGridView的SelectionMode设置为FullRowSelect
感谢MethodMan的评论,它帮助很大
除非您允许用户一次选择多行,否则不需要循环遍历它们。CellContentClick
事件的DataGridViewCellEventArgs
参数对象已经为您提供了被单击的行号。
string userID;
string Monday;
string Tuesday;
string Wednesday;
string Thursday;
string Friday;
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
userID = row.Cells[0].Value.ToString();
Monday = row.Cells[1].Value.ToString();
Tuesday = row.Cells[2].Value.ToString();
Wednesday = row.Cells[3].Value.ToString();
Thursday = row.Cells[4].Value.ToString();
Friday = row.Cells[5].Value.ToString();
dbHandler objDBHandler = new dbHandler();
objDBHandler.writeDB("INSERT INTO [OfficeCalendar].[dbo].[DayData]([UserID],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday]) VALUES ('" + userID + "','" + Monday + "','" + Tuesday + "','" + Wednesday + "','" + Thursday + "','" + Friday + "');", "byron");
同样,离题,你的代码提示SQL注入;使用参数化查询代替字符串连接。