Не удаляет выбранную строку просмотра данных - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу удалить выбранную строку из таблицы данных с помощью кнопки удаления, но выбранная строка не будет удалена, а первая строка Сетка данных будет удалена.Спасибо, если дадите совет

Это код кнопки:

private void button1_Click(object sender, EventArgs e)
{
    if (dgcontact.CurrentRow != null)
    {
        if (MessageBox.Show("...", "...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            int personID = Convert.ToInt32(dgcontact.CurrentRow.Cells[0].Value.ToString());
            repository.delete(personID);
        }
    }
}

А это метод удаления:

public bool delete(int personID)
{
    string connectionstring = "data source=.;initial catalog=person;integrated security=true";
    string query = "delete from tperson where personID=@personID";
    SqlConnection conn = new SqlConnection(connectionstring);
    SqlCommand cmd = new SqlCommand(query, conn);
    cmd.Parameters.AddWithValue("@personID", personID);
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
    return true;
}

1 Ответ

0 голосов
/ 06 декабря 2018

не используйте CurrentRow, просто переберите SelectedCells

using System.Linq;

if (MessageBox.Show("...", "...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
int selectedPersonId = dgcontact.SelectedCells.Cast<DataGridViewCell>()
                .Where(cell => cell.OwningColumn.Index.Equals(1))
                .Select(cell => Convert.ToInt32(cell.Value)).First();
repository.delete(selectedPersonId);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...