Я использую Datagrid Xceed, связанный с набором данных. Я хочу обновить базу данных при вызове RowEditEnd решетки данных. Проблема состоит в том, что во избежание нарушений параллелизма при обновлении мне необходимо очистить набор данных после обновления и заполнить его, как показано ниже:
public void UpdateDatabaseFromDataSet()
{
adapter.Update(exampleDataSet);
exampleDataSet.Clear();
adapter.Fill(exampleDataSet);
}
Я думаю, что должен сделать это, потому что основной столбец автоинкремента моего набора данных "ID" не соответствует значениям, сгенерированным базой данных. Когда я очищаю набор данных, он очищает сетку данных и выбранную ячейку. Это очень раздражает, поскольку, если вы отредактируете ячейку и нажмете клавишу ввода или клавишу направления, ячейка и база данных обновятся нормально, но ваш выбор будет сброшен вместо перехода к следующей строке / ячейке. Это делает ввод данных вручную очень громоздким.
Вот метод, который создает набор данных:
public void InitDataSet(int tableid)
{
cmd = new SQLiteCommand("SELECT * FROM table_" + tableid, con);
adapter = new SQLiteDataAdapter(cmd);
cb = new SQLiteCommandBuilder(adapter);
try
{
exampleDataSet = new DataSet();
adapter.Fill(exampleDataSet);
prodDataSet.Tables[0].Columns[0].AutoIncrementSeed = -1;
prodDataSet.Tables[0].Columns[0].AutoIncrementStep = -1;
currenttableID = tableid;
}
catch (ApplicationException ex)
{
MessageBox.Show("Encountered an error.", "Error: " + ex.ToString());
}
}
Обратите внимание, что я попытался установить для таблиц autoincrementseed и autoincrementsteps значение -1, но я все еще получаю нарушения параллелизма, если не пополняю набор данных.
Мне бы очень хотелось, чтобы моя таблица данных работала так, как она работает, если я не очищаю и не заполняю набор данных. Есть ли способ избежать нарушений параллелизма, с которыми я сталкиваюсь? Я поступаю неправильно?
Спасибо за вашу помощь.
-Steven