Быстрый способ вставить ту же запись, что и скопировать, с помощью Tableadapter

У меня есть таблица данных с кучей полей, и она заполняется данными с помощью 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);
}

person sovantha    schedule 29.11.2011    source источник
comment
Какой-нибудь пример кода был бы отличным. Потому что непонятно, как вы работаете с обновлением. Вы публикуете всю таблицу или как?   -  person Kemal Can Kara    schedule 29.11.2011
comment
Я просто метод обновления на моем дата-адаптере. Я размещаю по одной записи за раз.   -  person sovantha    schedule 29.11.2011


Ответы (2)


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

        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);
person Stecya    schedule 29.11.2011
comment
Что такое GUid.NewGuid () ;? У меня сообщение об ошибке: Невозможно преобразовать объект типа System.Guid в тип System.IConvertable. Не удалось сохранить ‹sdldslfka-sd2f13 -...› в столбце идентификатора. Ожидаемый тип - Int32 - person sovantha; 29.11.2011
comment
В моем примере столбец Id - это тип Guid, как я вижу, у вас там int, поэтому измените его на какой-нибудь int. См. Мое обновление - person Stecya; 29.11.2011

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

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

person Rhyous    schedule 18.05.2015