ArgumentOutOfRangeException каждый раз, когда пользователь редактирует связанный dataGridView - PullRequest
0 голосов
/ 05 июля 2019

В моем проекте WinForms есть DataGridView, связанный с BindingSource.DataGridview создается дизайнером форм.Я связываю свою таблицу SQL с Entity Framework следующим образом:

IQCDB.Measurement.Where(x => x.component_id == openTag.ID).Load();
measurementBindingSource.DataSource = IQCDB.Measurement.Local.ToBindingList();

DataGridView показывает правильные данные без проблем.Однако после того, как пользователь отредактировал ячейку, выдается следующее исключение.

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: rowIndex

Не имеет значения, какой столбец редактируется.Ввод неверного значения вызовет DataError, как и должно быть.Ввод действительного значения также вызывает DataError и после этого ранее описанное исключение.Интересно, что попытка удалить строку из DataGridView приводит к тому же исключению, но тогда сообщается имя параметра «Индекс».
Вот схема таблицы, которую я пытаюсь изменить: Схема таблицы базы данных

Вот трассировка стека:

   at System.Windows.Forms.DataGridView.InvalidateCell(Int32 columnIndex, Int32 rowIndex)
   at System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessListChanged(ListChangedEventArgs e)
   at System.Windows.Forms.DataGridView.DataGridViewDataConnection.currencyManager_ListChanged(Object sender, ListChangedEventArgs e)
   at System.ComponentModel.ListChangedEventHandler.Invoke(Object sender, ListChangedEventArgs e)
   at System.Windows.Forms.CurrencyManager.OnListChanged(ListChangedEventArgs e)
   at System.Windows.Forms.CurrencyManager.CancelCurrentEdit()
   at System.Windows.Forms.DataGridView.DataGridViewDataConnection.CancelRowEdit(Boolean restoreRow, Boolean addNewFinished)
   at System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessException(Exception exception, DataGridViewCellCancelEventArgs e, Boolean beginEdit)
   at System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue(Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex, Object value)
   at System.Windows.Forms.DataGridViewCell.SetValue(Int32 rowIndex, Object value)
   at System.Windows.Forms.DataGridView.PushFormattedValue(DataGridViewCell& dataGridViewCurrentCell, Object formattedValue, Exception& exception)
   at System.Windows.Forms.DataGridView.CommitEdit(DataGridViewCell& dataGridViewCurrentCell, DataGridViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave)
   at System.Windows.Forms.DataGridView.CommitEdit(DataGridViewDataErrorContexts context, Boolean forCurrentCellChange, Boolean forCurrentRowChange)
   at System.Windows.Forms.DataGridView.OnCellMouseDown(HitTestInfo hti, Boolean isShiftDown, Boolean isControlDown)
   at System.Windows.Forms.DataGridView.OnCellMouseDown(DataGridViewCellMouseEventArgs e)
   at System.Windows.Forms.DataGridView.OnMouseDown(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.DataGridView.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)

Вся помощь приветствуется.Просто попросите более конкретную информацию, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...