We are getting an error that is hard to duplicate and occurs at different points. The common occurrences seem to be when our grid is filtered and the user double clicks on a record to do some editing. When they come back from the editing dialog and we try to refresh the grid, this error occurs and the message "Object reference not set to an instance of an object" pops up.
When we run it in debug mode, it does not error out on any specific line of code, so we are having problems figuring out where the error is happening and on what code. From the detail below, its is happening on some type of calculations, but we have no idea how to figure out what its doing at the time or on what calculation. Any ideas? We are using Infragistics 8.3 still
thanks!
See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.************** Exception Text **************System.NullReferenceException: Object reference not set to an instance of an object. at Infragistics.Win.UltraWinGrid.RefUtils.GetRowCalcIndex(UltraGridRow row, FormulaRowIndexSource rowIndexType) at Infragistics.Win.UltraWinGrid.RefRowIterator.GetNextRow() at Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() at Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() at Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() at Infragistics.Win.UltraWinGrid.RefCellCollection.RefCellCollectionEnumerator.MoveNext() at Infragistics.Win.CalcEngine.RangeCalcInfo.EvaluateNextRow() at Infragistics.Win.CalcEngine.UltraCalcEngine.Evaluate(Int64 ticks) at Infragistics.Win.CalcEngine.UltraCalcEngine.Recalc(Int64 ticks, Boolean isStartOfRecalcOperation) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcInternal(Int64 ticks) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc(Int64 millis) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc() at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcSynchronous() at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.VerifyReCalc() at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.DirtyCalc(IUltraCalcReference reference, ValueDirtiedAction action) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.Infragistics.Win.CalcEngine.IUltraCalcManager.RowsCollectionVisibilityChanged(IUltraCalcReference reference) at Infragistics.Win.UltraWinGrid.ViewStyleBase.OnAfterRowListCreated_ProcessBand(UltraGridBand band) at Infragistics.Win.UltraWinGrid.ViewStyleBase.OnAfterRowListCreated(RowScrollRegion rsr) at Infragistics.Win.UltraWinGrid.ViewStyleBase.RecreateRowList(RowScrollRegion rsr) at Infragistics.Win.UltraWinGrid.RowScrollRegion.RegenerateVisibleRows(Boolean resetScrollInfo) at Infragistics.Win.UltraWinGrid.RowScrollRegion.WillScrollbarBeShown(ScrollbarVisibility assumeColScrollbarsVisible) at Infragistics.Win.UltraWinGrid.RowScrollRegion.PositionScrollbar(Boolean resetScrollInfo) at Infragistics.Win.UltraWinGrid.ScrollRegionBase.SetOriginAndExtent(Int32 origin, Int32 extent) at Infragistics.Win.UltraWinGrid.RowScrollRegion.SetOriginAndExtent(Int32 origin, Int32 extent) at Infragistics.Win.UltraWinGrid.DataAreaUIElement.ResizeRowScrollRegions() at Infragistics.Win.UltraWinGrid.DataAreaUIElement.PositionChildElements() at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UltraWinGrid.DataAreaUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UltraWinGrid.DataAreaUIElement.set_Rect(Rectangle value) at Infragistics.Win.UltraWinGrid.UltraGridUIElement.PositionChildElements() at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UltraWinGrid.UltraGridUIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive) at Infragistics.Win.UIElement.VerifyChildElements(Boolean recursive) at Infragistics.Win.ControlUIElementBase.VerifyIfElementsChanged(Boolean verify, Boolean syncMouseEntered) at Infragistics.Win.ControlUIElementBase.ProcessMouseMoveHelper(Object sender, MouseEventArgs e) at Infragistics.Win.ControlUIElementBase.ProcessMouseMove(Object sender, MouseEventArgs e) at Infragistics.Win.Utilities.ProcessEvent(Control control, ProcessEvent eventToProcess, EventArgs e) at Infragistics.Win.UltraControlBase.OnMouseMove(MouseEventArgs e) at System.Windows.Forms.Control.WmMouseMove(Message& m) at System.Windows.Forms.Control.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.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Hi,
From the call stack, it looks like the error is occurring on a MouseMove. So the mouse must be moving over a cell in the grid which causes the grid to try to verify it's display and this causes the grid to rebuild it's list of rows which was dirtied at some prior point.
The fact that the grid is blowing up while trying to create the rows is in indication that something is out of synch, which leads me to think that this might be a threading issue.
So what exactly are you doing when you "try to refresh the grid". Is your code using threads anywhere?
Hi Mike,
I had a very similar exception seen today. The only difference being that a summary value was being calculated as shown in the RefSummaryValueCollection in the stack trace. I have to admit that I have seen calculator bugs when using filtering since version 7.2 and have never updated the binding list on the grids except from the GUI thread. Their are five bands in the grid and there is a summary for band 2 that has a formula that references a value in the parent row and the sum of a column in the band 2 rows. There is also a summary for band 0 that is just a simple sum of each column.
I add, remove, or update the binding list periodically by doing an Invoke on the GUI thread and have seen calculator bugs (rarely however). I have removed the calculator as much as possible having even resorted to setting Row.Hidden to true instead of using a filter in previous projects but not this one. I am using version 8.2.20082.2204. The CalcFrequency is set to synchronous. I believe part of the problem is the fact that setting a filter is not a synchronous operation in the Grid so sometimes I have resorted to using EnsureSortedAndFiltered which is synchronous. This exception happened to one of our users so I cannot be exactly sure what they were doing when the exception occurred although as you mentioned above it look like a simple cell activation. Any help or suggestions you can give me would be appreciated. I am wondering at this point if I should resort to always using manual calculations to reduce the chance of an exception like this occuring again. However, I would prefer the bug to be simply fixed as opposed to have to jump through hoops to avoid it.
Here is the call stack:
Looks like it may be fairly easy to reproduce this problem. Got another exception on the same grid as my previous post. The grid has five bands, and the grid is bound to a binding list. Each business object has one property that is also a binding list. there is a filter on band 0 that whose MeetsCriteria method is this:
row.ChildBands.Cast<
UltraGridChildBand>().Any(b => b.Rows.VisibleRowCount > 0)
basically checking if any row collections in the child bands have any visible rows. At some times I may add a filter to a column in band 1 which is why I use the filter on band 0 so that the rows in band 0 whose child rows in band 1 have all been filtered out will themselves be filtered out. However, when this exception occurred I did not have the filter on band 1 set. I did have another filter on band 1 to 4 however. That filter checks a property of the business object for the row the filter is on.
Typically if I get a lot of updates I will Clear the entire binding list and rebuild it. So I construct the business objects for band 0, populate all the child binding lists and then add the business objects for band 0 to the main binding list that was already assigned to the data source. I never change the DataSource property of the binding source, I only clear that binding list assigned to it and repopulate it. I only do this if I get a whole new set of data as is the case when this exception occurred. During the clear of the binding list and its repopulation with the new business objects, I call BeginUpdate() and SuspendRowSynchronization() first and also SuspendCalc(). After I update the bindinglist I call DisplayLayout.RefreshFilters(), ResumeCalc(), ResumeRowSynchronization, and EndUpdate() in that order. Here's the exception that occurred:
Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefUtils.GetRowCalcIndex(Infragistics.Win.UltraWinGrid.UltraGridRow row = null, Infragistics.Win.UltraWinGrid.FormulaRowIndexSource rowIndexType) + 0x2e bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.GetNextRow() + 0x58 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() + 0x1a9 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() + 0x27 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefSummaryValueCollection.RefSummaryValueCollectionEnumerator.MoveNext() + 0xc bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.CalcEngine.RangeCalcInfo.EvaluateNextRow() + 0x1c bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.CalcEngine.UltraCalcEngine.Evaluate(long ticks = -1) + 0x8f bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.CalcEngine.UltraCalcEngine.Recalc(long ticks = -1) + 0xea bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcInternal(long ticks) + 0x9d bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc(long millis) + 0xe4 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc() + 0xe bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcSynchronous() + 0x27 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.VerifyReCalc() + 0x2f bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.DirtyCalc(Infragistics.Win.CalcEngine.IUltraCalcReference reference, Infragistics.Win.UltraWinCalcManager.ValueDirtiedAction action) + 0x4b bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.Infragistics.Win.CalcEngine.IUltraCalcManager.RowsCollectionReferenceResynched(Infragistics.Win.CalcEngine.IUltraCalcReference reference) + 0x2c bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.NotifyCalcManager_RowsCollectionResynced() + 0x7d bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.EnsureFiltersEvaluated() + 0x3ec bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.ScrollCountManagerSparseArray.VerifyAgainstScrollVersion() + 0x59 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.GetVisibleRowCount(bool includeSpecialRows = true) + 0x16 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.VisibleRowCount.get() + 0xa bytes > AMP.Client.dll!AMP.Client.UserControls.FuturesGrid.Grid_InitializeLayout.AnonymousMethod(Infragistics.Win.UltraWinGrid.UltraGridChildBand b) Line 534 + 0x10 bytes C# System.Core.dll!System.Linq.Enumerable.Any<Infragistics.Win.UltraWinGrid.UltraGridChildBand>(System.Collections.Generic.IEnumerable<Infragistics.Win.UltraWinGrid.UltraGridChildBand> source, System.Func<Infragistics.Win.UltraWinGrid.UltraGridChildBand,bool> predicate = {Method = Implicit function evaluation is turned off by user.}) + 0xa0 bytes AMP.Client.dll!AMP.Client.UserControls.FuturesGrid.Grid_InitializeLayout.AnonymousMethod(Infragistics.Win.UltraWinGrid.UltraGridRow row, object compare) Line 534 + 0x5e bytes C# AMP.Client.dll!AMP.Client.CustomFilterCondition.MeetsCriteria(Infragistics.Win.UltraWinGrid.UltraGridRow row) Line 723 C# Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.ColumnFilter.DoesRowPassFilters(Infragistics.Win.UltraWinGrid.UltraGridRow row = {Infragistics.Win.UltraWinGrid.UltraGridRow}) + 0x95 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.ColumnFiltersCollection.DoesRowPassFilters(Infragistics.Win.UltraWinGrid.UltraGridRow row = {Infragistics.Win.UltraWinGrid.UltraGridRow}, Infragistics.Win.UltraWinGrid.UltraGridColumn ignoreFiltersForColumn = null) + 0xa4 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.ColumnFiltersCollection.DoesRowPassFilters(Infragistics.Win.UltraWinGrid.UltraGridRow row) + 0x7 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.UltraGridRow.ApplyFilters(Infragistics.Win.UltraWinGrid.ColumnFiltersCollection columnFilters) + 0x40 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.EnsureFiltersEvaluated() + 0x2ef bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.UltraGridRow.IsFilteredOut.get() + 0x16 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.UltraGridRow.HiddenInternal.get() + 0x1b bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.UltraGridRow.HiddenResolved.get() + 0xd bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.FirstRow.get() + 0x7c bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.GetMaxScrollPosition(bool scrollToFill = true) + 0x12c bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.EnsureScrollRegionFilled(bool calledFromRegenerateVisibleRows) + 0x43 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.RegenerateVisibleRows(bool resetScrollInfo = true) + 0x74 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.WillScrollbarBeShown(Infragistics.Win.UltraWinGrid.ScrollbarVisibility assumeColScrollbarsVisible = Check) + 0xb2 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.PositionScrollbar(bool resetScrollInfo = false) + 0x63 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.ScrollRegionBase.SetOriginAndExtent(int origin, int extent) + 0x1a bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.SetOriginAndExtent(int origin, int extent) + 0x1e bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.DataAreaUIElement.ResizeRowScrollRegions() + 0xd5 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.DataAreaUIElement.PositionChildElements() + 0x30 bytes Infragistics2.Win.v8.2.dll!Infragistics.Win.UIElement.VerifyChildElements(Infragistics.Win.ControlUIElementBase controlElement = {Infragistics.Win.UltraWinGrid.UltraGridUIElement}, bool recursive = false) + 0x86 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.DataAreaUIElement.VerifyChildElements(Infragistics.Win.ControlUIElementBase controlElement, bool recursive) + 0xe6 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.DataAreaUIElement.Rect.set(System.Drawing.Rectangle value) + 0x3a bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.UltraGridUIElement.PositionChildElements() + 0xb3f bytes Infragistics2.Win.v8.2.dll!Infragistics.Win.UIElement.VerifyChildElements(Infragistics.Win.ControlUIElementBase controlElement = {Infragistics.Win.UltraWinGrid.UltraGridUIElement}, bool recursive = true) + 0x86 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.UltraGridUIElement.VerifyChildElements(Infragistics.Win.ControlUIElementBase controlElement, bool recursive) + 0x3d bytes Infragistics2.Win.v8.2.dll!Infragistics.Win.UIElement.VerifyChildElements(bool recursive) + 0x30 bytes Infragistics2.Win.v8.2.dll!Infragistics.Win.ControlUIElementBase.VerifyIfElementsChanged(bool verify, bool syncMouseEntered = false) + 0x29 bytes Infragistics2.Win.v8.2.dll!Infragistics.Win.ControlUIElementBase.CurrentCursor.get() + 0x24 bytes Infragistics2.Win.v8.2.dll!Infragistics.Win.UltraControlBase.Cursor.get() + 0x29 bytes
Another exception here. This call frame seems much simpler and I can tell the steps that created it. Same grid as before. Five bands and I have to correct some information from previous posts. The summaries are for Band 0 and Band 2 (not Band 1). The Band 2 summary formula is:
"sum( [BrokerEquity] ) - [../../BrokerEquity]"
which is simply the sum of the BrokerEquity column of the Band 2 row collection minus the BrokerEquity column of the parent row.
Now to generate the exception, this is what I did. First the binding list was created and the grid displayed. Then the entire binding list was cleared using .ClearItems() then it was repopulated simply by adding a bunch of the business objects for band 0 that already had child objects in each business object for the other bands. Then another business object for band 0 was added but its binding list property used for band 1 was empty. Then a business object was added to child binding list of that business object. It's easier to understand the last two sentences with the code shown:
entity =
new LegalEntity(margin.LegalEntity);
_entities.Add(entity); // _entities is the binding list for band 0 bound to binding source DataSource
custodian = new Custodian(margin.CustodianName);
entity.Brokers.Add(custodian); // Brokers is the binding list for band 1 - previously empty
// at this point the Custodian.Accounts is empty which is used for band 2
so the formula of "sum (band2 column) - band 1 column" should simply return 0 or empty value for the sum part but it is generating an NullReferenceException because the RowsCollection is null as shown in the stack trace below:
Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefUtils.GetRow(Infragistics.Win.UltraWinGrid.RowsCollection rows = null, int calcIndex = 0, Infragistics.Win.UltraWinGrid.FormulaRowIndexSource rowIndexType = VisibleIndex) + 0x64 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.GetFirstRow() + 0x1ff bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() + 0x352 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() + 0x74 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() + 0x74 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RefSummaryValueCollection.RefSummaryValueCollectionEnumerator.MoveNext() + 0x24 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.CalcEngine.RangeCalcInfo.EvaluateNextRow() + 0x4a bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.CalcEngine.UltraCalcEngine.Evaluate(long ticks = -1) + 0xbe bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.CalcEngine.UltraCalcEngine.Recalc(long ticks = -1) + 0xdc bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcInternal(long ticks = -1) + 0xe4 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc(long millis = -1) + 0x1a6 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc() + 0x29 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcSynchronous() + 0x48 bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.VerifyReCalc() + 0x5c bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.DirtyCalc(Infragistics.Win.CalcEngine.IUltraCalcReference reference = {Infragistics.Win.UltraWinGrid.RowReference}, Infragistics.Win.UltraWinCalcManager.ValueDirtiedAction action = RowReferenceAdded) + 0x6c bytes Infragistics2.Win.UltraWinCalcManager.v8.2.dll!Infragistics.Win.UltraWinCalcManager.UltraCalcManager.Infragistics.Win.CalcEngine.IUltraCalcManager.AddRowReference(Infragistics.Win.CalcEngine.IUltraCalcReference reference = {Infragistics.Win.UltraWinGrid.RowReference}) + 0x75 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.NotifyCalcManager_RowAdded(Infragistics.Win.UltraWinGrid.UltraGridRow row = {Infragistics.Win.UltraWinGrid.UltraGridRow}) + 0x143 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.SyncRows_Add(Infragistics.Win.UltraWinGrid.UltraGridRow row = {Infragistics.Win.UltraWinGrid.UltraGridRow}, int desiredIndex = -1) + 0x17f bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.SyncRows_Add(Infragistics.Win.UltraWinGrid.UltraGridRow row = {Infragistics.Win.UltraWinGrid.UltraGridRow}) + 0x27 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.OnListChangedHelper(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}, bool calledFromBandListChanged = false) + 0xb22 bytes Infragistics2.Win.UltraWinGrid.v8.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.OnListChanged(object sender = Count = Implicit function evaluation is turned off by user., System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x2f bytes [Native to Managed Transition] [Managed to Native Transition] System.dll!System.ComponentModel.BindingList<System.__Canon>.OnListChanged(System.ComponentModel.ListChangedEventArgs e) Line 168 C# System.dll!System.ComponentModel.BindingList<System.__Canon>.FireListChanged(System.ComponentModel.ListChangedType type, int index) Line 202 C# System.dll!System.ComponentModel.BindingList<System.__Canon>.InsertItem(int index, System.__Canon item) Line 233 C#
Can you post a small sample project that I can use to duplicate any of these exceptions? There are too many variables here for me to duplicate this without a sample.
I'll try, it may take me a few days. If I had the .pdbs and source for 8.2.20082.2204 or at least just the Infragistics2.Win.UltraWinCalcManager.v8.2.dll I could probably simply step through the code to identify why the exception occurs. That would be faster than creating a whole new solution to reproduce it. I know the source is supposed to be available but haven't been able to find it online.
Hello Sean K,
Thank you for contacting Infragistics Community.
I have tested the fix for the original issue in 2012 vol2 and everything works ok for me. Since you have a slightly different scenario, the MessageBox might have something to do with that behavior. Could you please comment the code that shows that MessageBox and verify if the same exception going to appear again, just for testing purposes?
Also if you are able to duplicate it in a small sample I will be glad to look into it.
Please feel free to let us know if you have any other questions with this matter.
Note that I able to get rid of this error by setting CalcFrequency on my UltraCalcManager to Synchronous...
I'd like to switch it back to asynch since there's a strong chance I'll be taking a performance hit when this grid loads more than a few rows.
User updates column in grid
AfterCellUpdate is fired/caught
Update is passed to database
------ABOVE ERROR------
MessageBox shows stating that save was successful (Note that all updates are properly being passed to DB)
---APP CRASHES-----------
Note:
No multithreading in this app
Summaries exist (but not on the "TradeExecution" band)
Hi, I'm still getting this error in V 12.2....
at Infragistics.Win.UltraWinGrid.RefRowIterator.MoveNext() at Infragistics.Win.UltraWinGrid.RefSummaryValueCollection.RefSummaryValueCollectionEnumerator.MoveNext() at Infragistics.Win.CalcEngine.RangeCalcInfo.EvaluateNextRow() at Infragistics.Win.CalcEngine.UltraCalcEngine.Evaluate(Int64 ticks) at Infragistics.Win.CalcEngine.UltraCalcEngine.Recalc(Int64 ticks, Boolean isStartOfRecalcOperation) at Infragistics.Win.CalcEngine.UltraCalcEngine.Recalc(Int64 ticks) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalcInternal(Int64 ticks) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.ReCalc(Int64 millis) at Infragistics.Win.UltraWinCalcManager.UltraCalcManager.onTimerTick(Object sender, EventArgs e) at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.SafeNativeMethods.MessageBox(HandleRef hWnd, String text, String caption, Int32 type) at System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean showHelp) at System.Windows.Forms.MessageBox.Show(String text) at FMSClient.SubMenu.TradeEdit.dgEditTrades_AfterCellUpdate(Object sender, CellEventArgs e) in C:\Development\MSMQ\FMSClient\SubMenu\TradeEdit.cs:line 326
Any suggestions?
Hello Srikanth,
This has been already fixed and you could use the latest service release for NetAdvantage for Windows Forms 11.2 - 2074.
This service release is now available under your account at the Infragistics Website. To download the service release, log in to‘My IG’ and select ‘Keys & Downloads’. Select the appropriate tab for this product, then the license key. The available service releases should now be listed on the page.
Please let me know if I can provide any further assistance.