我知道这是 DataGridView 的基本功能,但由于某种原因,我无法让它工作。我只希望 Windows 窗体上的 DataGridView 在用户单击“保存”按钮时将对其所做的任何更改提交到数据库。
我根据 DropDownList 中的用户选择触发的函数填充 DataGridView,如下所示:
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
SqlDataAdapter ruleTableDA = new SqlDataAdapter("SELECT rule.fldFluteType AS [Flute], rule.fldKnife AS [Knife], rule.fldScore AS [Score], rule.fldLowKnife AS [Low Knife], rule.fldMatrixScore AS [Matrix Score], rule.fldMatrix AS [Matrix] FROM dbo.tblRuleTypes rule WHERE rule.fldMachine_ID = '1003'", con);
DataSet ruleTableDS = new DataSet();
ruleTableDA.Fill(ruleTableDS);
RuleTable.DataSource = ruleTableDS.Tables[0];
}
在我的保存功能中,我基本上有以下内容(我已经删除了它周围的一些代码以达到重点):
using (SqlDataAdapter ruleTableDA = new SqlDataAdapter("SELECT rule.fldFluteType AS [Flute], rule.fldKnife AS [Knife],
rule.fldScore AS [Score], rule.fldLowKnife AS [Low Knife],
rule.fldMatrixScore AS [Matrix Score], rule.fldMatrix AS [Matrix]
FROM dbo.tblRuleTypes rule WHERE rule.fldMachine_ID = '1003'", con))
{
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(ruleTableDA);
DataTable dt = new DataTable();
dt = RuleTable.DataSource as DataTable;
ruleTableDA.Fill(dt);
ruleTableDA.Update(dt);
}
好的,所以我编辑了代码以执行以下操作:构建命令,基于 DataGridView (RuleTable) 创建一个 DataTable,用 DataTable 填充 DataAdapter,然后更新数据库。现在 ruleTableDA.Update(dt) 抛出异常“并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条”。