I have two different forms with the same GDBG class on them. If I change a value in a column that has a custom CellRenderer and there''s only ONE window open, everything works fine. If I do this same change when both windows are open, I get the dump below. It doesn''t happen when I leave this column - it occurs when I leave the row. What can I look for or do?
catched at Syncfusion.Windows.Forms.Grid.GridDataBoundGrid.EndEdit() in :line 0
An unhandled exception of type ''System.NullReferenceException'' occurred in syncfusion.grid.dll
Additional information: Object reference not set to an instance of an object.
catched at Syncfusion.Windows.Forms.Grid.GridCurrentCell.Deactivate(Boolean discardChanges) in :line 0
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Syncfusion.Windows.Forms.Grid.GridCurrentCell.Deactivate(Boolean discardChanges)
at Syncfusion.Windows.Forms.Grid.GridCurrentCell.MoveTo(Int32 rowIndex, Int32 colIndex, GridSetCurrentCellOptions options, Boolean discardChanges)
at Syncfusion.Windows.Forms.Grid.GridCurrentCell.MoveTo(Int32 rowIndex, Int32 colIndex, GridSetCurrentCellOptions options)
at Syncfusion.Windows.Forms.Grid.GridCurrentCell.InternalMove(GridDirectionType direction, Int32 num, GridSetCurrentCellOptions options)
at Syncfusion.Windows.Forms.Grid.GridSelectCellsMouseController.GridCurrentCellExternalMove(GridDirectionType direction, Int32 num, Boolean extendSelection)
at Syncfusion.Windows.Forms.Grid.GridCurrentCell.Move(GridDirectionType direction, Int32 num, Boolean extendSelection, Boolean wrapCell)
at Syncfusion.Windows.Forms.Grid.GridCurrentCell.Move(GridDirectionType direction, Int32 num, Boolean extendSelection)
at Syncfusion.Windows.Forms.Grid.GridControlBase.OnKeyDown(KeyEventArgs e)
at Syncfusion.Windows.Forms.Grid.GridDataBoundGrid.OnKeyDown(KeyEventArgs e)
at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
at Syncfusion.Windows.Forms.Grid.GridControlBase.ProcessKeyEventArgs(Message& m)
at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
at Syncfusion.Windows.Forms.Grid.GridControlBase.ProcessKeyMessage(Message& m)
at System.Windows.Forms.Control.WmKeyChar(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at Syncfusion.Windows.Forms.ScrollControl.WndProc(Message& msg)
at Syncfusion.Windows.Forms.Grid.GridControlBase.WndProc(Message& msg)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.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.ComponentManager.System.Windows.Forms.UnsafeNativeMethods+IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at TimelineManager.TimelineInterface.Main() in c:\moss adams\holman - timeline\development\timelinemanager\timelineinterface.cs:line 1579The program '' TimelineManager.exe'' has exited with code 0 (0x0).
More details :
I''m using version 188.8.131.52.
I am calling NotifyCurrentCellChanged.
LOLoriJanuary 6, 2005 01:28 AM
More information :
Have further information - forget the information about the two windows. The value being changed by the custom renderer is also the current sort column of the grid. If changing the value causes the row order to change, that''s when I''m getting the NullReferenceException.
ADAdministrator Syncfusion Team January 6, 2005 02:19 AM
Getting a sample showing the problem that we can debug would be helpful.
If you temporarily replace your custom cell type with our default "TextBox" celltype, does the problem go away? This would either eliminate the custom control as the source of teh problem, indicate that it plays a role in the problem.
LOLoriJanuary 6, 2005 11:00 AM
My grid/project is now sufficiently complex that putting together a sample isn''t doable. But some help with events & event order might help me discover something.
I''ve added dummy CurrentCellDeactivating & CurrentCellDeactivated event handlers and put WriteLines in. When the exception occurs, I get a CurrentCellDeactivating without a CurrentCellDeactivated (makes sense from the stack dump). Is there something that I can look at in the CurrentCellDeactivating event that would tell me that the grid is going to do an EndEdit call in CurrentCellDeactivated? Or, is there another event I can hook that gets invoked between CurrentCellDeactivating & CurrentCellDeactivated?
ADAdministrator Syncfusion Team January 6, 2005 11:28 AM
You can test CurrentCell.IsModified to see if the currentcell thinks it has been modified. You can also test currentcell.IsEditing.
After CurrentCellDeactivating is raised, you will get a CurrentCellValidating (if there is a change) and possibly a CurrentCellCloseDropDown and maybe a CurrentCellCOntrolLostFocus before teh deactivated event is raised.
If you have the source code, you can check out:
Syncfusion\Essential Suite\184.108.40.206\Windows\Grid.Windows\Src\Base\Control\GridCurrentCell.cs(1462) if (!Grid.RaiseCurrentCellDeactivating())
LOLoriJanuary 6, 2005 12:02 PM
Actually the EndEdit that''s failing isn''t at the CurrentCell level. It''s the Binder.EndEdit that''s being invoked from CurrentCellDeactivated due to the need to flush the row. The custom cell in question isn''t even the current cell when this error occurs.