Current filter:
                                You should refresh the page.
                                  • Hi Guys,

                                    we just had a massive performance problem and i am currently not sure if i miss something really basic? if you start MainDemo - open an contact - then for example modify firstname - BUT do NOT leave the field - the save button gets active even if ImmediatePostData is FALSE? as a side effect - also ALL appearance rules get evaluated on EVERY keystroke... ? am i missing something obvious?

                                • Martin Praxmarer - DevExpress MVP 01.08.2019

                                  maybe the Subject is wrong - ImmediatePostData of course works as expected - but i was really not aware that appearance rules are evaluated on each keystroke - is that something that has changed or is it since beginning? i always had in mind that appearance get fired when property has changed - but not control value has changed? attached an callstack:

                                    DevExpress.ExpressApp.ConditionalAppearance.v18.2.dll!DevExpress.ExpressApp.ConditionalAppearance.RefreshAppearanceController.RefreshAppearance(object obj) Unbekannt
                                    DevExpress.ExpressApp.ConditionalAppearance.v18.2.dll!DevExpress.ExpressApp.ConditionalAppearance.RefreshAppearanceController.ObjectSpace_ObjectChanged(object sender, DevExpress.ExpressApp.ObjectChangedEventArgs e) Unbekannt
                                    DevExpress.ExpressApp.v18.2.dll!DevExpress.ExpressApp.BaseObjectSpace.OnObjectChanged(DevExpress.ExpressApp.ObjectChangedEventArgs args) Unbekannt
                                    DevExpress.ExpressApp.Xpo.v18.2.dll!DevExpress.ExpressApp.Xpo.XPObjectSpace.SetModified(object obj, DevExpress.ExpressApp.ObjectChangedEventArgs args) Unbekannt
                                    DevExpress.ExpressApp.v18.2.dll!DevExpress.ExpressApp.BaseObjectSpace.SetModified(object obj, DevExpress.ExpressApp.DC.IMemberInfo memberInfo) Unbekannt
                                    DevExpress.ExpressApp.v18.2.dll!DevExpress.ExpressApp.DetailView.Editor_ControlValueChanged(object sender, System.EventArgs e) Unbekannt
                                    DevExpress.ExpressApp.v18.2.dll!DevExpress.ExpressApp.Editors.PropertyEditor.OnControlValueChanged() Unbekannt
                                    DevExpress.ExpressApp.Win.v18.2.dll!DevExpress.ExpressApp.Win.Editors.DXPropertyEditor.Editor_EditValueChanged(object sender, System.EventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Repository.RepositoryItem.RaiseEditValueChangedCore(System.EventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Repository.RepositoryItem.RaiseEditValueChanged(System.EventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.BaseEdit.RaiseEditValueChanged() Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.BaseEdit.OnEditValueChanged() Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.TextEdit.OnEditValueChanged() Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.MemoEdit.OnEditValueChanged() Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.BaseEdit.OnEditValueChanging(DevExpress.XtraEditors.Controls.ChangingEventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.TextEdit.OnEditValueChanging(DevExpress.XtraEditors.Controls.ChangingEventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.BaseEdit.EditValue.set(object value) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.TextEdit.OnMaskBox_ValueChanged(object sender, System.EventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Mask.MaskBox.RaiseEditTextChanged() Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Mask.MaskBox.MaskStrategy.SimpleStrategy.DoAfterTextChanged(System.EventArgs e) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Mask.MaskBox.OnTextChanged(System.EventArgs e) Unbekannt
                                    System.Windows.Forms.dll!System.Windows.Forms.TextBoxBase.WmReflectCommand(ref System.Windows.Forms.Message m) Unbekannt
                                    System.Windows.Forms.dll!System.Windows.Forms.TextBoxBase.WndProc(ref System.Windows.Forms.Message m) Unbekannt
                                    System.Windows.Forms.dll!System.Windows.Forms.TextBox.WndProc(ref System.Windows.Forms.Message m) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Mask.MaskBox.BaseWndProc(ref System.Windows.Forms.Message m) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Mask.MaskBox.MaskStrategy.SimpleStrategy.DoWndProc(ref System.Windows.Forms.Message m) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.Mask.MaskBox.WndProc(ref System.Windows.Forms.Message m) Unbekannt
                                    DevExpress.XtraEditors.v18.2.dll!DevExpress.XtraEditors.TextBoxMaskBox.WndProc(ref System.Windows.Forms.Message msg) Unbekannt
                                    System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m) Unbekannt
                                    System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m) Unbekannt
                                    System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg, System.IntPtr wparam, System.IntPtr lparam) Unbekannt

                                1 Solution

                                Creation Date Importance Sort by

                                Hello, Martin.

                                This behavior is intentional. It was previously discussed in the B204854 - Low Performance in MasterDetail-Mode ticket. To suppress raising the ObjectChanged event on every key press, set the DetailView.RaiseObjectChangedOnControlValueChanged property to False. This property is not documented and hidden from Intellisense, though.

                                Show all comments
                                • Martin Praxmarer - DevExpress MVP 01.08.2019

                                  thank you Michael - somehow totally missed that behaviour / never really noticed it. though we already disabled appearance for some views during mass updates - i never noticed that appearances are refreshed for each keystroke in textfields for example - always thought after property change... we will try this property!

                                  thx

                                • Dennis (DevExpress) 01.08.2019

                                  Yes, you must be careful with many appearance and validation rules, especially with complex dynamic criteria in them. These rules are evaluated not only during editor value changes, but also during the View opening and saving process.

                                  To test how your app performs "clean", you can temporarily remove the ConditionalAppearance module.
                                  If your rules noticeably affect overall performance, consider further performance profiling and avoiding excessive hide/disable editor operations (for instance, by redesigning your Views layout and user flow).

                                  We look forward to hearing from you on how this or other approaches from S171794 practically work in your real app. Thanks in advance!

                                • Martin Praxmarer - DevExpress MVP 01.08.2019

                                  thx dennis - we regulary profile out application - in this case the customer / admin has created some rules by themself - in such cases it is hard to diagnose as this kind of performance problem then occours at runtime without our knowing. but thats not the problem here - i really completly missed the RaiseObjectChangedOnControlValueChanged and always thought rules will fire on property changed event - i would have lost every bet here ;)

                                • Dennis (DevExpress) 01.08.2019

                                  No worries, Noxe. BTW, do you still use techniques like in your Performance impact with ConditionalAppearance ticket?

                                • Martin Praxmarer - DevExpress MVP 01.08.2019

                                  Yes and no - we moved the logic out of the treelisteditor to an controller - and handle some events of our objects - and there disable / enable apperance when starting / finishing the process - since one property change can raise hundred's afterwards - we frefresh appearance only once all is done - worked well so far ;) i also think the approch from https://www.devexpress.com/Support/Center/Question/Details/S171794/how-to-avoid-excessive-conditionalappearance-rule-updates-and-improve-overall-form is interessting - 2.Temporarily disable the AppearanceController - with handling Modified/Validated - but i need some free time if this can handle also our scenario - since in our case we have a master/detail view and we disable appearances for both views until calculations are ready/finished

                                • Martin Praxmarer - DevExpress MVP 01.08.2019

                                  PPS: since RaiseObjectChangedOnControlValueChanged has no side effects - wouldnt it make sense at least for new projects to set it to true as with other properties in the project template - and also show it in intellisense and document it - wondering why it is such a hidden and not documented thing...

                                • Dennis (DevExpress) 01.09.2019

                                  Thank you for your feedback, Noxe. When updating S171794 yesterday, I counted only four users to whom we suggested this internal option for the last eight years.
                                  As you know, we constantly monitor trending problems and enhance our product, wizard, demos, docs or examples accordingly. We are not yet ready to suggest this option everywhere at this stage. Anyway, we will take your feedback into account considering the fact that you have such a huge app with tons of custom code into account.

                                • Martin Praxmarer - DevExpress MVP 01.09.2019

                                  thx Dennis!

                                • Alex Gn (DevExpress) 08.13.2019

                                  With v19.2.1, we set the DetailView.RaiseObjectChangedOnControlValueChanged property value to false by default. Refer to the Core - The IObjectSpace.ObjectChanged event is not raised in response to the editor's ControlValueChanged event ticket for details.