У меня есть это логическое в моем коде.Назначение источника данных для исключения исключений источника привязки
Initialize(){
DataGridView view = new DataGridView();
view.BindingSource = bs;
bs.dataSource = dataTable;
//Fill Data Table using Adapter.
da.fill(dataTable);
}
CallMeEveryFewMinutes(DataTable dataTable){
List<String> changed = findChangedOjbects();
// Fill datatable2 with changed objects.
da2.fill(datatable2, changed)
Refresh(dataTable, datatable2);
// dataTable is now refreshed. Bind it again so changes are reflected.
// ********** PROBLEM AREA ***************
// once in a while it throws the below exception.
bs.dataSource = dataTable;
}
Мало того, он также бросает то же исключение для datagridview.sort (...) - один раз в то время ..
Все указатели будут очень полезны.
System.Reflection.TargetInvocationException: Исключение было выбрано целью вызова. ---> System.ArgumentOutOfRangeException: Указанный аргумент вышел за пределы допустимых значений. Имя параметра: RowIndex на System.Windows.Forms.DataGridView.GetCellDisplayRectangle (Int32 ColumnIndex, Int32 RowIndex, Boolean cutOverflow) в System.Windows.Forms.DataGridView.GetCellAdjustedDisplayRectangle (Int32 ColumnIndex, Int32 RowIndex, Boolean cutOverflow) в системе .Windows.Forms.DataGridView.InvalidateCellPrivate (Int32 ColumnIndex, Int32 RowIndex) на System.Windows.Forms.DataGridView.OnCellCommonChange (Int32, Int32 ColumnIndex RowIndex) на System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessListChanged (ListChangedEventArgs е) в System.Windows.Forms.DataGridView.DataGridViewDataConnection.currencyManager_ListChanged (отправитель объекта, ListChangedEventArgs e) в System.Windows.Forms.CurrencyManager.OnListC повешен (ListChangedEventArgs е) в System.Windows.Forms.CurrencyManager.CancelCurrentEdit() в System.Windows.Forms.DataGridView.DataGridViewDataConnection.CancelRowEdit (Boolean restoreRow, булева addNewFinished) в System.Windows.Forms.DataGridView.DataGridViewDataConnection. OnRowValidating (DataGridViewCellCancelEventArgs е) в System.Windows.Forms.DataGridView.OnRowValidating (DataGridViewCell & DataGridViewCell, Int32 ColumnIndex, Int32 RowIndex) на System.Windows.Forms.DataGridView.SetCurrentCellAddressCore (Int32, Int32 ColumnIndex RowIndex, булевой setAnchorCellAddress, булевой validateCurrentCell , Boolean viaMouseClick) в System.Windows.Forms.DataGridView.set_CurrentCell (значение DataGridViewCell) в System.Windows.Forms. DataGridView.OnClearingRows() в System.Windows.Forms.DataGridViewRowCollection.ClearInternal (Boolean) recreateNewRow в System.Windows.Forms.DataGridView.RefreshColumnsAndRows() в System.Windows.Forms.DataGridView.DataGridViewDataConnection.DataSourceMetaDataChanged() на System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessListChanged (ListChangedEventArgs е) в System.Windows.Forms.DataGridView.DataGridViewDataConnection.currencyManager_ListChanged (Object отправителя, ListChangedEventArgs е) в System.Windows.Forms.CurrencyManager.OnListChanged (ListChangedEventArgs е) в System.Windows.Forms.CurrencyManager.List_ListChanged (отправитель объекта, ListChangedEventArgs e) в System.Windows.Forms.BindingSource.OnListChanged (L istChangedEventArgs е) в System.Windows.Forms.BindingSource.ResetBindings (Boolean metadataChanged) в System.Windows.Forms.BindingSource.SetList (список IList, Boolean metaDataChanged, Boolean applySortAndFilter) в System.Windows.Forms.BindingSource.ResetList() в System.Windows.Forms.BindingSource.set_DataSource (значение объекта) в Caddie.ViewHelper.MainForm.FormHelper.refreshWorker_RunWorkerCompleted (отправитель объекта, RunWorkerCompletedEventArgs e) в C: \ Project \ Project_1.9 \ WindowsFormsApplication \ ViewHelper \ MainForm \ FormHelper.cs: строка 373 в System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted (RunWorkerCompletedEventArgs e) в System.ComponentModel.BackgroundWorker.AsyncOperationCompleted (Object arg)
Благодаря носовой ответа, я обнаружил, что вместо подмены той же таблицы данных для связывания источника, мы должны вместо «сброса привязок» это позволяет управлять (вид сетки данных), чтобы обновить их содержимое, прежде чем что-либо другой исполняет (как слушатели) – karephul