Быстрый способ вставить ту же запись, что и копия, используя Tableadapter - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть таблица данных с кучей полей, и она заполнена данными с помощью tableadapter. Обычно записи, которые нужно вставить, немного отличаются (только id). Я не хочу, чтобы пользователь снова все перепечатывал, поэтому есть быстрый способ вставить текущую запись в базу данных. Обратите внимание, что все мои операции вставки, обновления и удаления основаны на моем адаптере таблиц.

//Get only one last record that has been added when the form load.
bookTableAdapter.FillByLastID(bookDataSet.dtBook);

private void btnNew_Click(object sender, EventArgs e)
{  
  bookBindingSource.AddNew();  
}

private void btnSave_Click(object sender, EventArgs e)
{
  this.Validate();
  bookBindingSource.EndEdit();
  bookTableAdapter.Update(bookDataSet.dtBook);
}

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Попробуйте скопировать строку:

        DataRow row = table.Rows[0]; // row you want to copy

        DataRow newRow = table.NewRow();
        newRow.ItemArray = row.ItemArray.ToArray();
        newRow["Id"] = 10;  // change Id

        table.Rows.Add(newRow);
0 голосов
/ 18 мая 2015

Принятый ответ не сработал для меня, потому что запрос TableAdapter вернул больше столбцов, чем в новой строке, 33. В моей таблице 32 столбца.Это устаревший код и база данных.

Однако эта статья дала мне ответ: Эта строка уже относится к другой ошибке таблицы при попытке добавить строки?

...