【发布时间】:2012-02-23 06:10:52
【问题描述】:
好吧,伙计们,
经过多次阅读并在这里找到解决方案后,我只需要问这个。 我已经搜索过它,但它并没有帮助我解决这个问题。 另外,请原谅我的语法错误......
有什么问题? 我加载了一个带有组合框的 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);
}
}
}
但问题是,第一列是一个自动增量 ID,每次我提交更改的 DataGrid 时都会不断提高。 难道没有更好的方法吗?
谢谢!
PS:我在 Visual Studio 2010 中使用 WPF 中的 C# 进行编码。
【问题讨论】: