Problem after upgrade to 1.6.1


Author
Message
Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Chan,

There is no reason that we could not publish this code.  I need to get it ready on this side and try to have it posted by tomorrow.

Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
OK...if you login to the My Account area, you should be able to see the Source Code Setup for the 1.6.5 beta.  This way you can be running on the beta and still get the source code.
Chan
Chan
Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)
Group: Forum Members
Posts: 533, Visits: 2K
Hi,

Thank you for source code.



I have recompile SF and run my program and able to reproduce my problem again. Below is the call stack, please advice:



>   SaleBusinessObject.dll!JK.Inventory.Sale.BusinessObject.SaleDetailsBO.SubTotal.get() Line 463 + 0x34 bytes   C#

   SaleBusinessObject.dll!JK.Inventory.Sale.BusinessObject.SaleDetailsBO.Field_SubTotal_Descriptor.GetValue(object component = {JK.Inventory.Sale.BusinessObject.SaleDetailsBO}) Line 1056 + 0x2c bytes   C#

   [External Code]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessBindingSource.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 123 + 0x1b bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessBindingSource.BusinessObject_IsDirtyChanged(Object sender = {JK.Inventory.Sale.BusinessObject.SaleDetailsBO}, System.EventArgs e = {System.EventArgs}) Line 705 + 0x21 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.raise_IsDirtyChanged(Object sender = {JK.Inventory.Sale.BusinessObject.SaleDetailsBO}, System.EventArgs e = {System.EventArgs}) Line 1071 + 0x21 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.OnIsDirtyChanged(Boolean DirtyShouldBe = True) Line 1086 + 0x12 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.CurrentView_ListChanged(Object sender = {System.Data.DataView}, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 2431 + 0x10 bytes   Basic

   [External Code]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.NewRow() Line 6312 + 0x23 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.Add(Boolean CheckSecurity = True) Line 7610 + 0xa bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.Add() Line 7580 + 0xe bytes   Basic

   POSApplication.exe!JK.POS.UI.Windows.Forms.POSForm.AddSale() Line 94 + 0xe bytes   C#

   POSApplication.exe!JK.POS.UI.Windows.Forms.POSForm.cmdNew_ItemClick(object sender = {DevExpress.XtraBars.Ribbon.RibbonBarManager}, DevExpress.XtraBars.ItemClickEventArgs e = {DevExpress.XtraBars.ItemClickEventArgs}) Line 88 + 0x7 bytes   C#

   [External Code]   

   MicroFour StrataFrame UI.dll!MicroFour.StrataFrame.Application.StrataFrameApplication.RunApplication() Line 220 + 0x8 bytes   Basic

   POSApplication.exe!JK.POS.Application.AppMain.Main() Line 40 + 0x6 bytes   C#

   [External Code]   




Below is the code at AddSale()



private void AddSale()

{

this.Add();

saleDetailsBO.Add();

}





Thank you
Chan
Chan
Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)
Group: Forum Members
Posts: 533, Visits: 2K
Hi,

Below is another call stack which is NOT using BusinessBindingSource.



>   InventoryBusinessObject.dll!JK.Inventory.Product.BusinessObject.ItemsBO.Recalled.get() Line 980 + 0x2e bytes   C#

   InventoryBusinessObject.dll!JK.Inventory.Product.BusinessObject.ItemsBO.Field_Recalled_Descriptor.GetValue(object component = { [JK.Inventory.Product.BusinessObject.ItemsBO]}) Line 2545 + 0x29 bytes   C#

   [External Code]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.AddBinding(System.Windows.Forms.Control ControlToRefresh = {MicroFour.StrataFrame.UI.Windows.Forms.CheckBox}, String PropertyName = "Checked", String FieldName = "Recalled") Line 2087 + 0x17 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.RefreshControl(MicroFour.StrataFrame.UI.Windows.Forms.IBusinessBindable ControlToRefresh = {MicroFour.StrataFrame.UI.Windows.Forms.CheckBox}, Boolean DataPresent = True) Line 3399 + 0x3f bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.RefreshBoundControls() Line 3291 + 0x11 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.raise_Navigated(MicroFour.StrataFrame.Business.NavigatedEventArgs e = {MicroFour.StrataFrame.Business.NavigatedEventArgs}) Line 1369 + 0x9 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.OnNavigated(MicroFour.StrataFrame.Business.NavigatedEventArgs e = {MicroFour.StrataFrame.Business.NavigatedEventArgs}) Line 1384 + 0xc bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.Navigate(MicroFour.StrataFrame.Business.BusinessNavigationDirection Direction = MicroFour.StrataFrame.Business.BusinessNavigationDirection.Absolute, Integer AbsoluteIndex = 0, Object() PrimaryKeyValues = Nothing, Boolean AttemptToCheckRules = True, Boolean IsRefill = False) Line 3205 + 0x10 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.Navigate(MicroFour.StrataFrame.Business.BusinessNavigationDirection Direction = MicroFour.StrataFrame.Business.BusinessNavigationDirection.Absolute, Integer AbsoluteIndex = 0, Object() PrimaryKeyValues = Nothing) Line 3058 + 0x17 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.Navigate(MicroFour.StrataFrame.Business.BusinessNavigationDirection Direction = MicroFour.StrataFrame.Business.BusinessNavigationDirection.Absolute, Integer AbsoluteIndex = 0) Line 7108 + 0x11 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessBindingSource.CurrentChanged(Object sender = {System.Windows.Forms.CurrencyManager}, System.EventArgs e = {System.EventArgs}) Line 669 + 0x29 bytes   Basic

   [External Code]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessBindingSource.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 123 + 0x1b bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessBindingSource.BusinessObject_IsDirtyChanged(Object sender = {JK.Inventory.Product.BusinessObject.ItemsBO}, System.EventArgs e = {System.EventArgs}) Line 705 + 0x21 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.raise_IsDirtyChanged(Object sender = {JK.Inventory.Product.BusinessObject.ItemsBO}, System.EventArgs e = {System.EventArgs}) Line 1071 + 0x21 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.OnIsDirtyChanged(Boolean DirtyShouldBe = True) Line 1086 + 0x12 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.CurrentView_ListChanged(Object sender = {System.Data.DataView}, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 2431 + 0x10 bytes   Basic

   [External Code]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.NewRow() Line 6312 + 0x23 bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.Add(Boolean CheckSecurity = True) Line 7610 + 0xa bytes   Basic

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.UI.Windows.Forms.BaseForm.Add(Boolean CheckSecurity = True) Line 2168 + 0xe bytes   Basic

   MicroFour StrataFrame UI.dll!MicroFour.StrataFrame.UI.Windows.Forms.MaintenanceFormToolStrip.cmdNew_Click(Object sender = {System.Windows.Forms.ToolStripButton}, System.EventArgs e = {System.EventArgs}) Line 1272 + 0x1a bytes   Basic

   [External Code]   

   MicroFour StrataFrame UI.dll!MicroFour.StrataFrame.Application.StrataFrameApplication.RunApplication() Line 220 + 0x8 bytes   Basic

   InventoryApplication.exe!JK.Inventory.Application.AppMain.Main() Line 45 + 0x6 bytes   C#

   [External Code]   





Thank you
Bill Cunnien
Bill Cunnien
StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)
Group: Forum Members
Posts: 785, Visits: 3.6K
Is the SubTotal property of the BO returning a null value?  I've had similar stack traces when I ran into that issue.

Bill

Chan
Chan
Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)
Group: Forum Members
Posts: 533, Visits: 2K
Hi,

Yes, SubTotal property is null when _CurrentDataTable.Rows.Add(loRow) in BusinessLayer.NewRow(). However, I have set AllowNullOnNewRow to false so that it will call InitializeNewRow() to initialize my columns value.



Unfortunely, the error occurred before AllowNullOnNewRow checking.



Any ideas to solve it? Is it a bug? This problem not occured in prior version.



Please advice.



Thank you
Bill Cunnien
Bill Cunnien
StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)StrataFrame VIP (1.1K reputation)
Group: Forum Members
Posts: 785, Visits: 3.6K
Chan (01/24/2008)

Any ideas to solve it? Is it a bug? This problem not occured in prior version.

Hey Chan,

Not sure if this will help, but I would do one of two things in this situation to start troubleshooting.  The first relates to the Business Object Mapper.  Within it, if the subtotal field is part of you database schema, I would set the field to Return Alternate on Null...perhaps with a 0.  Second, if that does not work, I would make the subtotal a custom property of the business object and always make sure a number if returned...my default, of course, is 0.

Not sure why this issue would pop up in the current release of StrataFrame.  I suppose there could be a breaking change in there somewhere.

Hope that helps,
Bill

Chan
Chan
Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)
Group: Forum Members
Posts: 533, Visits: 2K
Hi,

The problem just gone after I upgrade to VS 2008. Strange.



However, I hit stackoverflow exception.



   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.CurrentView_ListChanged(Object sender = {System.Data.DataView}, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 2417 + 0x3b bytes   Basic

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x10e bytes   

   System.Data.dll!System.Data.DataView.IndexListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x1a bytes   

   System.Data.dll!System.Data.DataView.IndexListChangedInternal(System.ComponentModel.ListChangedEventArgs e) + 0x4b bytes   

   System.Data.dll!System.Data.DataViewListener.IndexListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x3c bytes   

   System.Data.dll!System.Data.Index.OnListChanged.AnonymousMethod(System.Data.DataViewListener listener, System.ComponentModel.ListChangedEventArgs args, bool arg2, bool arg3) + 0x7 bytes   

   System.Data.dll!System.Data.Listeners.Notify(System.ComponentModel.ListChangedEventArgs arg1 = {System.ComponentModel.ListChangedEventArgs}, bool arg2 = false, bool arg3 = false, System.Data.Listeners.Action action = {Method = Cannot evaluate expression because the current thread is in a stack overflow state.}) + 0x75 bytes   

   System.Data.dll!System.Data.Index.OnListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x9b bytes   

   System.Data.dll!System.Data.Index.RecordStateChanged(int oldRecord, System.Data.DataViewRowState oldOldState, System.Data.DataViewRowState oldNewState, int newRecord, System.Data.DataViewRowState newOldState, System.Data.DataViewRowState newNewState) + 0xfa bytes   

   System.Data.dll!System.Data.DataTable.RecordStateChanged(int record1 = 294, System.Data.DataViewRowState oldState1 = Added, System.Data.DataViewRowState newState1 = None, int record2 = 295, System.Data.DataViewRowState oldState2 = None, System.Data.DataViewRowState newState2 = Added) + 0x7f bytes   

   System.Data.dll!System.Data.DataTable.SetNewRecordWorker(System.Data.DataRow row = {System.Data.DataRow}, int proposedRecord, System.Data.DataRowAction action = Change, bool isInMerge, int position, bool fireEvent = true, out System.Exception deferredException = null) + 0x29d bytes   

   System.Data.dll!System.Data.DataTable.SetNewRecord(System.Data.DataRow row, int proposedRecord, System.Data.DataRowAction action, bool isInMerge, bool fireEvent) + 0x3d bytes   

   System.Data.dll!System.Data.DataRow.EndEdit() + 0x48 bytes   

   System.Data.dll!System.Data.DataRow.this[System.Data.DataColumn].set(System.Data.DataColumn column, object value) + 0xe4 bytes   

   System.Data.dll!System.Data.DataRow.this[string].set(string columnName, object value) + 0x19 bytes   

   InventoryBusinessObject.dll!JK.Inventory.Purchasing.BusinessObject.ReturnNotesBO.VendorID.set(System.Guid value = {System.Guid}) Line 452 + 0x43 bytes   C#

   InventoryBusinessObject.dll!JK.Inventory.Purchasing.BusinessObject.ReturnNotesBO.Field_VendorID_Descriptor.SetValue(object component = {JK.Inventory.Purchasing.BusinessObject.ReturnNotesBO}, object Value = {System.Guid}) Line 1217 + 0x5b bytes   C#

   System.Windows.Forms.dll!System.Windows.Forms.BindToObject.SetValue(object value) + 0x58 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.PullData(bool reformat, bool force) + 0x14f bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.Target_PropertyChanged(object sender, System.EventArgs e) + 0x28 bytes   

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.dll!System.ComponentModel.PropertyDescriptor.OnValueChanged(object component, System.EventArgs e) + 0x4c bytes   

   System.dll!System.ComponentModel.ReflectPropertyDescriptor.OnValueChanged(object component, System.EventArgs e) + 0x72 bytes   

   System.dll!System.ComponentModel.ReflectPropertyDescriptor.OnINotifyPropertyChanged(object component, System.ComponentModel.PropertyChangedEventArgs e) + 0x75 bytes   

   JK Framework Inherited UI.dll!JK.Framework.UI.Windows.Forms.DevEx.LookupEdit.FirePropertyChanged(string propertyName = "SelectedValue") Line 914 + 0x29 bytes   C#

   JK Framework Inherited UI.dll!JK.Framework.UI.Windows.Forms.DevEx.LookupEdit.SelectedValueChanged() Line 920 + 0xd bytes   C#

   JK Framework Inherited UI.dll!JK.Framework.UI.Windows.Forms.DevEx.LookupEdit.SelectedValue.set(object value = {System.Guid}) Line 802 + 0x7 bytes   C#

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.dll!System.ComponentModel.ReflectPropertyDescriptor.SetValue(object component = {JK.Framework.UI.Windows.Forms.DevEx.EnhancedLookupEdit}, object value = {System.Guid}) + 0xe3 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.SetPropValue(object value) + 0xc9 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.PushData(bool force) + 0x71 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PushData(out bool success = true) + 0x50 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PushData() + 0xe bytes   

   System.Windows.Forms.dll!System.Windows.Forms.PropertyManager.OnCurrentChanged(System.EventArgs ea = {System.EventArgs}) + 0xd bytes   

   System.Windows.Forms.dll!System.Windows.Forms.BindToObject.PropValueChanged(object sender, System.EventArgs e) + 0x23 bytes   

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.CurrentView_ListChanged(Object sender = {System.Data.DataView}, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 2417 + 0x3b bytes   Basic

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x10e bytes   

   System.Data.dll!System.Data.DataView.IndexListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x1a bytes   

   System.Data.dll!System.Data.DataView.IndexListChangedInternal(System.ComponentModel.ListChangedEventArgs e) + 0x4b bytes   

   System.Data.dll!System.Data.DataViewListener.IndexListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x3c bytes   

   System.Data.dll!System.Data.Index.OnListChanged.AnonymousMethod(System.Data.DataViewListener listener, System.ComponentModel.ListChangedEventArgs args, bool arg2, bool arg3) + 0x7 bytes   

   System.Data.dll!System.Data.Listeners.Notify(System.ComponentModel.ListChangedEventArgs arg1 = {System.ComponentModel.ListChangedEventArgs}, bool arg2 = false, bool arg3 = false, System.Data.Listeners.Action action = {Method = Cannot evaluate expression because the current thread is in a stack overflow state.}) + 0x75 bytes   

   System.Data.dll!System.Data.Index.OnListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x9b bytes   

   System.Data.dll!System.Data.Index.RecordStateChanged(int oldRecord, System.Data.DataViewRowState oldOldState, System.Data.DataViewRowState oldNewState, int newRecord, System.Data.DataViewRowState newOldState, System.Data.DataViewRowState newNewState) + 0xfa bytes   

   System.Data.dll!System.Data.DataTable.RecordStateChanged(int record1 = 293, System.Data.DataViewRowState oldState1 = Added, System.Data.DataViewRowState newState1 = None, int record2 = 294, System.Data.DataViewRowState oldState2 = None, System.Data.DataViewRowState newState2 = Added) + 0x7f bytes   

   System.Data.dll!System.Data.DataTable.SetNewRecordWorker(System.Data.DataRow row = {System.Data.DataRow}, int proposedRecord, System.Data.DataRowAction action = Change, bool isInMerge, int position, bool fireEvent = true, out System.Exception deferredException = null) + 0x29d bytes   

   System.Data.dll!System.Data.DataTable.SetNewRecord(System.Data.DataRow row, int proposedRecord, System.Data.DataRowAction action, bool isInMerge, bool fireEvent) + 0x3d bytes   

   System.Data.dll!System.Data.DataRow.EndEdit() + 0x48 bytes   

   System.Data.dll!System.Data.DataRow.this[System.Data.DataColumn].set(System.Data.DataColumn column, object value) + 0xe4 bytes   

   System.Data.dll!System.Data.DataRow.this[string].set(string columnName, object value) + 0x19 bytes   

   InventoryBusinessObject.dll!JK.Inventory.Purchasing.BusinessObject.ReturnNotesBO.VendorID.set(System.Guid value = {System.Guid}) Line 452 + 0x43 bytes   C#

   InventoryBusinessObject.dll!JK.Inventory.Purchasing.BusinessObject.ReturnNotesBO.Field_VendorID_Descriptor.SetValue(object component = {JK.Inventory.Purchasing.BusinessObject.ReturnNotesBO}, object Value = {System.Guid}) Line 1217 + 0x5b bytes   C#

   System.Windows.Forms.dll!System.Windows.Forms.BindToObject.SetValue(object value) + 0x58 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.PullData(bool reformat, bool force) + 0x14f bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.Target_PropertyChanged(object sender, System.EventArgs e) + 0x28 bytes   

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.dll!System.ComponentModel.PropertyDescriptor.OnValueChanged(object component, System.EventArgs e) + 0x4c bytes   

   System.dll!System.ComponentModel.ReflectPropertyDescriptor.OnValueChanged(object component, System.EventArgs e) + 0x72 bytes   

   System.dll!System.ComponentModel.ReflectPropertyDescriptor.OnINotifyPropertyChanged(object component, System.ComponentModel.PropertyChangedEventArgs e) + 0x75 bytes   

>   JK Framework Inherited UI.dll!JK.Framework.UI.Windows.Forms.DevEx.LookupEdit.FirePropertyChanged(string propertyName = "SelectedValue") Line 914 + 0x29 bytes   C#

   JK Framework Inherited UI.dll!JK.Framework.UI.Windows.Forms.DevEx.LookupEdit.SelectedValueChanged() Line 920 + 0xd bytes   C#

   JK Framework Inherited UI.dll!JK.Framework.UI.Windows.Forms.DevEx.LookupEdit.SelectedValue.set(object value = {System.Guid}) Line 802 + 0x7 bytes   C#

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.dll!System.ComponentModel.ReflectPropertyDescriptor.SetValue(object component = {JK.Framework.UI.Windows.Forms.DevEx.EnhancedLookupEdit}, object value = {System.Guid}) + 0xe3 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.SetPropValue(object value) + 0xc9 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.Binding.PushData(bool force) + 0x71 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PushData(out bool success = true) + 0x50 bytes   

   System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PushData() + 0xe bytes   

   System.Windows.Forms.dll!System.Windows.Forms.PropertyManager.OnCurrentChanged(System.EventArgs ea = {System.EventArgs}) + 0xd bytes   

   System.Windows.Forms.dll!System.Windows.Forms.BindToObject.PropValueChanged(object sender, System.EventArgs e) + 0x23 bytes   

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.CurrentView_ListChanged(Object sender = {System.Data.DataView}, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) Line 2417 + 0x3b bytes   Basic

   [Native to Managed Transition]   

   [Managed to Native Transition]   

   System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x10e bytes   

   System.Data.dll!System.Data.DataView.IndexListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x1a bytes   

   System.Data.dll!System.Data.DataView.IndexListChangedInternal(System.ComponentModel.ListChangedEventArgs e) + 0x4b bytes   

   System.Data.dll!System.Data.DataViewListener.IndexListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x3c bytes   

   System.Data.dll!System.Data.Index.OnListChanged.AnonymousMethod(System.Data.DataViewListener listener, System.ComponentModel.ListChangedEventArgs args, bool arg2, bool arg3) + 0x7 bytes   

   System.Data.dll!System.Data.Listeners.Notify(System.ComponentModel.ListChangedEventArgs arg1 = {System.ComponentModel.ListChangedEventArgs}, bool arg2 = false, bool arg3 = false, System.Data.Listeners.Action action = {Method = Cannot evaluate expression because the current thread is in a stack overflow state.}) + 0x75 bytes   

   System.Data.dll!System.Data.Index.OnListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x9b bytes   

   System.Data.dll!System.Data.Index.RecordStateChanged(int oldRecord, System.Data.DataViewRowState oldOldState, System.Data.DataViewRowState oldNewState, int newRecord, System.Data.DataViewRowState newOldState, System.Data.DataViewRowState newNewState) + 0xfa bytes   

   System.Data.dll!System.Data.DataTable.RecordStateChanged(int record1 = 292, System.Data.DataViewRowState oldState1 = Added, System.Data.DataViewRowState newState1 = None, int record2 = 293, System.Data.DataViewRowState oldState2 = None, System.Data.DataViewRowState newState2 = Added) + 0x7f bytes   

   System.Data.dll!System.Data.DataTable.SetNewRecordWorker(System.Data.DataRow row = {System.Data.DataRow}, int proposedRecord, System.Data.DataRowAction action = Change, bool isInMerge, int position, bool fireEvent = true, out System.Exception deferredException = null) + 0x29d bytes   

   System.Data.dll!System.Data.DataTable.SetNewRecord(System.Data.DataRow row, int proposedRecord, System.Data.DataRowAction action, bool isInMerge, bool fireEvent) + 0x3d bytes   





Below is my code for INotifyPropertyChanged



#region INotifyPropertyChanged Members



public event PropertyChangedEventHandler PropertyChanged;



protected bool CheckPropertyChanged(string propertyName, ref T oldValue, ref T newValue)

{

if (oldValue == null && newValue == null)

{

return false;

}



if ((oldValue == null && newValue != null) || !oldValue.Equals((T)newValue))

{

oldValue = newValue;



FirePropertyChanged(propertyName);



return true;

}



return false;

}



protected void FirePropertyChanged(string propertyName)

{

if (this.PropertyChanged != null)

{

this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));

}

}



protected void SelectedValueChanged()

{

FirePropertyChanged("SelectedValue");

}



#endregion





Please advice.



Thank you
Chan
Chan
Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)Advanced StrataFrame User (713 reputation)
Group: Forum Members
Posts: 533, Visits: 2K
Hi,

Just to summary the call stack posted in previous message.



I found that, once I assign value to Vendor property (internally CurrentRow["VendorID"]), it cause BusinessLayer.CurrentView_ListChanged fired. It cause .NET BindingManagerBase try to push data back to binded property. It cause recurring cycle.



Any ideas?



Thank you
Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Chan,

The ListChanged event has not changed between the releases.  First, instead of me trying to disesct a piece of your code from above, it would be better if you could recreate this in a quick sample so I can debug this to tell you where your issue resides.  You mentioned that you have implemented the INotifyPropertyChanged event (which I think is the source of this particular problem) but where did you implement this?  I think that your implementation is raising the changed event prior to SF which could be causing the problem (an initialization issue).  Instead of posting all of the stack trace, I really need more detail about your code, where you are implementhing this logic, and get in a reproducable sample.  We have not encountered this type of behaviour anywhere else, so I think this is specific to your code.  Any additional details would be helpful.  Thanks.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search