Как изменить выбранную строку в datatable?

У меня есть другая проблема. Я связал datagridview, и когда я дважды щелкаю по строке в нем, все значения ячеек "превращаются" в текстовые поля. То, что я хочу сделать, это когда я изменяю значение текстового поля, там также должны быть сделаны изменения в datagridview и datatable. Пока что я могу изменить только первый ряд данных, а не выбранный. Вот мой код:

private void buttonUredi_Click(object sender, EventArgs e)
    {
        int i = 0;
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            for (int j = 0; j < dataGridView1.ColumnCount; ++j)
            {
               competitorDataSet.Growns.Rows[i][j] = row.Cells[j].Value;
            }

                }
                competitorDataSet.Growns.Rows[i][0] = textStN.Text;
                competitorDataSet.Growns.Rows[i][1] = textN.Text;
                competitorDataSet.Growns.Rows[i][2] = textSN.Text;
                competitorDataSet.Growns.Rows[i][3] = textC.Text;
                competitorDataSet.Growns.Rows[i][4] = textYB.Text;
                this.grownsBindingSource.EndEdit();
                if (dataGridView1.BindingContext[competitorDataSet.Growns] != null)
                {
                    dataGridView1.BindingContext[competitorDataSet.Growns].EndCurrentEdit();
                }
                this.competitorDataSet.Growns.AcceptChanges();
}

2 ответа

Выбранный номер строки сохраняется в EventArgs e. Используйте его, чтобы найти выбранную строку.

РЕДАКТИРОВАТЬ Я понимаю, что вы дважды щелкните строку в DGV? Если да, у вас есть что-то вроде этого:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

Вы можете сохранить номер строки, по которой щелкнули, вот так:

int nClickedRow = e.RowIndex;

Ты используешь int i = 0 в качестве переменной для индексатора в DataTable.Rows но ты никогда не меняешь это.

int i = 0;
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
    for (int j = 0; j < dataGridView1.ColumnCount; ++j)
    {
       competitorDataSet.Growns.Rows[i][j] = row.Cells[j].Value;
    }
    i++;
}

Тем не менее, это изменит произвольные строки в таблице, первый dataGridView1.SelectedRows.Count строк. Это желательно?

Другие вопросы по тегам