Хорошо, ребята,
После многих чтений и нахождения решений здесь мне просто нужно спросить об этом.
Я уже искал это, но это не помогло мне так хорошо, как следовало разобраться в этом.
Кроме того, извините меня за мои грамматические ошибки, если таковые имеются ...
В чем проблема?
Я загружаю форму WPF с помощью комбинированного списка. Этот комбинированный список получает все имена из всех таблиц в моей базе данных. Я выбираю имя таблицы и нажимаю кнопку, чтобы заполнить DataGrid (WPF) выбранной таблицей. Это все работает отлично. Но затем, когда я изменил ячейку или добавил / удалил строку или столбец, я должен обновить это в базе данных.
Вот где я застрял. Я получил это работать через не очень оптимальный способ. Поэтому я спрашиваю, есть ли лучшее решение.
//fill the datagrid with data from chosen table in combobox!
selectedTable = cboxTables.SelectedItem.ToString();
dataset = db.getDataFromTable(selectedTable);
datatable = dataset.Tables[selectedTable];
datagridAdmin.ItemsSource = datatable.DefaultView;
И когда выбор в DataGrid изменился, я установил активную кнопку «Отправить», которая вызывает этот код:
db.updateTable(selectedTable, datatable);
Обратите внимание, что 'db' - это экземпляр моего класса базы данных. Метод заключается в следующем:
public bool updateTable(String tableName, DataTable datatable)
{
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(thisConnection.ConnectionString, SqlBulkCopyOptions.CheckConstraints))
{
//Set destination table name
//to table previously created.
bulkcopy.DestinationTableName = tableName;
try
{
thisCommand = new SqlCommand("DELETE FROM " + tableName, thisConnection);
thisCommand.ExecuteNonQuery();
bulkcopy.WriteToServer(datatable);
}
catch (Exception ex)
{
logger.WriteLine(applicationName, ex.Message);
}
}
}
Но проблема в том, что первый столбец - это идентификатор автоинкремента, который увеличивается каждый раз, когда я отправляю измененную DataGrid.
Разве нет лучшего способа сделать это?
Спасибо!
PS: я пишу в Visual Studio 2010 с C # в WPF.