Как изменить выбранную строку в 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
строк. Это желательно?