By Chan - 1/19/2008
Hi,
I am facing problem after upgrade 1.6.1. Now, whenever I click new button, I will hit error below even though I have set AllowNullValueOnNewRow = false. Before this, everything just working fine. Any ideas?
System.InvalidCastException was unhandled by user code
Message="Specified cast is not valid."
Source="InventoryBusinessObject"
StackTrace:
at JK.Inventory.Product.BusinessObject.ItemsBO.get_Recalled() in F:\Projects\Inventory\InventoryBusinessObject\Product\ItemsBO.Designer.cs:line 980
at JK.Inventory.Product.BusinessObject.ItemsBO.Field_Recalled_Descriptor.GetValue(Object component) in F:\Projects\Inventory\InventoryBusinessObject\Product\ItemsBO.Designer.cs:line 2545
at System.Windows.Forms.BindToObject.GetValue()
at System.Windows.Forms.Binding.PushData(Boolean force)
|
By Chan - 1/19/2008
I tried to restore back those DLL, but it will crash VS, cause I am unable to open my project.
Please advice. URGENT!!!
|
By Chan - 1/19/2008
Hi,
Just to add on, 1.6.1 mentioned is refering to assemblies posted in forum as patch.
Thank you
|
By StrataFrame Team - 1/21/2008
1) Are you explicitly setting the value of the Recalled field to DBNull.Value in the SetDefaultValues()?2) Are any of the other fields in the new row DBNull.Value also, or just the Recalled field? 3) Is it trying to cast a DBNull.Value to a Boolean, or something else?
|
By Chan - 1/21/2008
Hi,
1) Are you explicitly setting the value of the Recalled field to DBNull.Value in the SetDefaultValues()?
No, I doesn't set DBNull.Value to recalled field. Beside, the error occurred BEFORE SetDefaultValues event fired.
2) Are any of the other fields in the new row DBNull.Value also, or just the Recalled field?
It happen to ALL fields.
3) Is it trying to cast a DBNull.Value to a Boolean, or something else?
To Boolean. The same problem happen to other fields as well, which is integer.
Please advice. It is urgent.
Thank you
|
By StrataFrame Team - 1/21/2008
Is there more to the stack trace, or is what you posted in the first post all of it? I'm wondering if we could get back to what is causing the binding to update immediately after you add the new row... the binding shouldn't be updating until after all of the values are initialized and the SetDefaultValues() is called.
|
By Chan - 1/21/2008
Hi,
> InventoryBusinessObject.dll!JK.Inventory.Product.BusinessObject.ItemsBO.CategoryID.get() Line 452 + 0x2e bytes C#
InventoryBusinessObject.dll!JK.Inventory.Product.BusinessObject.ItemsBO.Field_CategoryID_Descriptor.GetValue(object component = {JK.Inventory.Product.BusinessObject.ItemsBO}) Line 1841 + 0x29 bytes C#
[External Code]
InventoryApplication.exe!JK.Inventory.Application.AppMain.Main() Line 45 + 0x6 bytes C#
[External Code]
I checked my code again, and found that as you suspected it might be caused by data binding. It works fine If I just
ItemsBO loBO = new ItemsBO();
loBO.Add();
In my project, the error happen at least two fields which :-
1. Bind to SF's check box
2. Custom lookup control inherited from DevExpress lookupedit.
How should I check next?
|
By Chan - 1/21/2008
Hi.
Just curious, any ideas why didn't the error happen in prior version? Anything changed?
|
By Chan - 1/21/2008
Hi,
Any possible to get the full source code for 1.6.1 (as posted at forum) so that I could debug?
You helps are much appreciated.
Thank you
|
By Chan - 1/22/2008
Hi,
I have successfully reverted back all SF assemblies. And now my application is working fine. So, I am sure something goes wrong with the latest 1.6.1 as posted at forum. Either my mistake or SF source code bug. How could I clarify this?
I tried to disassembly MicroFour Strataframe Business.dll, but failed
System.IndexOutOfRangeException: Index was outside the bounds [of] the array.
at Reflector.CodeModel.Memory.ParameterDeclarationCollection.get_Item(Int32 index)
at ᜢ.ᜀ.ᜁ(IEventDeclaration A_0)
at ᜢ.ᜀ.ᜃ(ITypeDeclaration A_0)
at ᜢ.ᜀ.ᜀ(INamespace A_0)
at ភ.ᜀ(ITypeDeclaration A_0, String A_1, ILanguageWriterConfiguration A_2)
Imports MicroFour.StrataFrame
Imports MicroFour.StrataFrame.Data
I need to changes of Browse Dialog Date setting. Please help.
Thank you
|
By Trent L. Taylor - 1/23/2008
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.
|
By Trent L. Taylor - 1/23/2008
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.
|
By Chan - 1/24/2008
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
|
By Chan - 1/24/2008
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
|
By Bill Cunnien - 1/24/2008
Is the SubTotal property of the BO returning a null value? I've had similar stack traces when I ran into that issue.Bill
|
By Chan - 1/24/2008
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
|
By Bill Cunnien - 1/24/2008
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
|
By Chan - 1/24/2008
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
|
By Chan - 1/26/2008
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
|
By Trent L. Taylor - 1/27/2008
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.
|
By Chan - 1/28/2008
Hi,
I found the cause. I have set my BO as Form.PrimaryBusinessObject, I also have dropped a BusinessBindingSource on form which also set the same BO to its BusinessObject property.
Just FYI, the BBS is already there for long time. Just that it didn't cause problem before upgrade. Strange.
Anyway, thank you help and sorry for my mistake.
Thank you
|
By StrataFrame Team - 1/29/2008
No problem... I'm glad you found the source of the issue.
|
By Trent L. Taylor - 1/29/2008
Glad you found your problem...I didn't think that the update would have made a difference, so I am glad you got it going
|
|