Удалить строку из DataGridView, учитывая его индекс - PullRequest
2 голосов
/ 02 ноября 2009

My DataGridView - это выделение одной строки, и происходит событие rowEnter, где я получаю индекс строки каждый раз, когда изменяется выбранная строка.

    private void rowEnter(object sender, DataGridViewCellEventArgs e)
    {
        currentRowIndex = e.RowIndex;
    }

когда я нажимаю кнопку удаления, я использую тот же индекс для удаления строки

            myDataSet.Avaliado.Rows[currentRowIndex].Delete();
            avaliadoTableAdapter.Update(myDataSet.Avaliado);

работает нормально, если ни один столбец в DataGridView не отсортирован, в противном случае вы получите ошибку. Каким должен быть способ узнать индекс строки в наборе данных, который соответствует индексу строки из DataGridView?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Вам не нужно захватывать текущий индекс строки каждый раз, когда выбирается новая строка. Попробуйте что-то вроде этого:

if (_Grid.SelectedRows.Count <= 0) { return; } // nothing selected

DataGridViewRow dgvRow = _Grid.SelectedRows[0];

// assuming you have a DataTable bound to the DataGridView:
DataRowView row = (DataRowView)dgvRow.DataBoundItem;
// now go about deleting the row however you would do that.

Если у вас есть какой-то другой тип данных, связанный с каждой строкой сетки, просто приведите DataGridViewRow.DataBoundItem к тому типу данных, который у вас есть.

0 голосов
/ 02 ноября 2009

Вы можете найти текущую выбранную строку во время удаления:

if(myDataGridView.SelectedRows.Count > 0)
     currentRowIndex = myDataGridView.SelectedRows[0].Index;
0 голосов
/ 02 ноября 2009

У меня обычно есть первичный ключ для этой строки как скрытый столбец (мое соглашение использует первый столбец использования).

Затем я могу попросить моего слоя постоянства сделать все остальное.

...