Ticket T705042
Visible to All Users
Duplicate

The Save button gets active and appearance rules are evaluated on every key press even if ImmediatePostData=False

created 6 years ago

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?

Comments (1)
M M
Martin Praxmarer - DevExpress MVP 6 years ago

    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

    Answers approved by DevExpress Support

    created 6 years ago (modified 6 years ago)

    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 previous comments (6)
      Dennis Garavsky (DevExpress) 6 years ago

        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.

        M M
        Martin Praxmarer - DevExpress MVP 6 years ago

          thx Dennis!

          AG AG
          Alex Gn (DevExpress) 6 years ago

            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.

            Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.

            Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.