Здравствуйте. Я использую следующий код для обновления DGV во время проверки:
private void propertyInformationDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (propertyInformationDataGridView.IsCurrentCellDirty && e.ColumnIndex.ToString() != "3")
{
propertyInformationTableAdapter.Update((newCityCollectionDataSet)propertyInformationBindingSource.DataSource);
}
}
И этот код для обновления DGV и передачи значений в определенные таблицы:
private void propertyInformationDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex.ToString() == "3")
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)propertyInformationDataGridView.Rows[e.RowIndex].Cells[3];
DataGridViewRow row = propertyInformationDataGridView.Rows[e.RowIndex] as DataGridViewRow;
System.Data.DataRowView SelectedRowView;
newCityCollectionDataSet.PropertyInformationRow SelectedRow;
SelectedRowView = (System.Data.DataRowView)propertyInformationBindingSource.Current;
SelectedRow = (newCityCollectionDataSet.PropertyInformationRow)SelectedRowView.Row;
if (Convert.ToBoolean(checkCell.Value) == false && propertyInformationDataGridView.IsCurrentCellDirty)
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var matchedCaseNumber = (from c in dc.GetTable<PropertyInformation>()
where c.CaseNumberKey == SelectedRow.CaseNumberKey
select c).SingleOrDefault();
DateTime saveNow = DateTime.Now;
reportsSent newReport = new reportsSent();
newReport.CaseNumberKey = SelectedRow.CaseNumberKey;
dc.reportsSents.InsertOnSubmit(newReport);
matchedCaseNumber.DateFinished = saveNow;
dc.SubmitChanges();
}
}
}
Что происходит, когда я щелкаю по значению готово или по значению ячейки 3, а затем щелкаю по другой ячейке, например, по значению ячейки 0 в другой записи, я получаю ошибку. Я понимаю, почему я получаю ошибку, но как мне предотвратить это? Должен ли я переместить код из проверки в щелчок, чтобы ошибка не возникала или есть другой способ справиться с этим? Причина возникновения ошибки заключается в том, что я обновляюсь следующим образом: dc.SubmitChanges();
, а затем снова обновляется здесь:
if (propertyInformationDataGridView.IsCurrentCellDirty && e.ColumnIndex.ToString() != "3")
{
propertyInformationTableAdapter.Update((newCityCollectionDataSet)propertyInformationBindingSource.DataSource);
}
Я не уверен, как заставить правильный набор данных обновляться после завершения дела.
Ошибка:
Нарушение параллелизма: команда UpdateCommand затронула 0 из ожидаемых 1 записей.
В конструкторе это появляется здесь:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
[global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
public virtual int Update(newCityCollectionDataSet dataSet) {
return this.Adapter.Update(dataSet, "PropertyInformation");
Спасибо
Kor