选择按钮被单击的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的行

我修改了自己的问题,

将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注入;使用参数化查询代替字符串连接。