Я знаю, что это основная функция DataGridView, но по какой-то причине я просто не могу заставить ее работать. Я просто хочу, чтобы DataGridView в моей форме Windows отправлял любые изменения, внесенные в базу данных, когда пользователь нажимает кнопку «Сохранить».WinForms DataGridView - база данных обновлений
Я заселить DataGridView в соответствии с функцией, вызванной выбором пользователя в DropDownList следующим образом:
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);
}
Хорошо, так что я редактировал код, чтобы сделать следующее: создать команды, создать DataTable на основе DataGridView (RuleTable), заполнить DataAdapter с DataTable, и обновить базу данных. Теперь ruleTableDA.Update (dt) бросает исключение «Нарушение параллелизма: UpdateCommand затронул 0 ожидаемых 1 записей».
показать полный ЗЕЬЕСТ. CommandBuilder не работает (тихо), когда есть JOIN или что-то в этом роде. –
Хорошо, я добавил инструкцию SQL. –
Нет такой вещи, как C# .NET. –