Bug Report B204854
Visible to All Users

Core - Low Performance in MasterDetail-Mode

created 13 years ago

Hello,
we discovered, that in masterDetailMode the Getters of all Properties are called after hitting a key within a propertyEditor.
This is also done, if immediatePostData is false! In our Application there are about 100 Properties and the application is idle
about a second after hitting a key.
To reproduce this issue do the following within the example application:

  1. Open the payment mask
  2. Type a key in any propertyEditor
  3. You will see that every keystroke leads to a call of the getter of amount
    - If you try the same thing in the detailView of a payment you will see that a keystroke doesn't lead to a call of the getter
    - If you try the same thing in the listView the getter is also not called
    - The problem occures only in the detailView, if masterDetailMode is active.
    Best regards
    Kim
Show previous comments (1)

    Hello DevExpress-Team,
    sorry, but I don't find this Property in the whole sourceCode auf the ExpressApp Framework.
    Beside of that I can't understand that a refreshment of the ListEditor is required with every keystroke
    (the values of the editors in the listView are not updated with a keystroke => Why do you touch every Property?)
    I do also understand that the object has to be marked as modified but only with the very first keystroke?
    Best regards
    Kim

    DevExpress Support Team 13 years ago

      Hi Kim,
      As I already mentioned, this property is not documented. It is not visible through Intellisense. You should type it manually. Please try this workaround and let us know if this helps.
      Thanks,
      Michael.

        Hello Michael,
        sorry but the Property is not in your SourceCode (I made a fulltext-search over the whole SourceCode of the DevExpressFramework).
        Maybe this Property is new in 1.7 ? If it is not could you please modify the attached solution ?
        I added three Screenshots, which demonstrate the issue.
        In ListViewModified.png you can see that counter was not increased by every keystroke if you edit in the ListView of the MasterDetail-Mode.
        In DetailViewModified.png you can see that the counter was increased by every keystroke.
        In DetailViewModfied(NoMasterDetail).png the counter was also not increased.
        You say that it is by design that the listView updates the value of the displayed properties if you edit in the detailView, but the detailView itself
        is not updated? Why is the ListView updated with every keystroke in the corresponding detailView (immediatePostData is not true!!)? I think it should only
        be updated if you leave the propertyEditor?
        Best regards and thank you in advance
        Kim

        Answers

        created 13 years ago

        Hi Kim,
        I have checked our source code and found out that the DetailView.RaiseObjectChangedOnControlValueChanged property has been implemented in version 11.1.7. Please update the DXperience suite to use the provided workaround.
        In ListViewAndDetailView mode the list view and the detail view live in the same object space and both GridListEditor and detail view property editor are connected to the same object. The SpinEdit control raises the EditValueChanged event for every key press. The DetailView reacts to this event by calling the ObjectSpace.SetModified method with an object being edited passed in an argument. This method raises the ObjectSpace.ObjectChanged event. The GridListEditorController handles this event and refreshes the grid row corresponding to the modified object. Unfortunately, we cannot change this behavior without breaking the existing functionality. Please use the workaround we provided.
        Thanks,
        Michael.

          Show previous comments (3)
          DevExpress Support Team 13 years ago

            Hi Kim,
            We are working on your issue and will answer you as soon as possible. We are sorry for the delay.
            Thanks,
            Michael.

            DevExpress Support Team 13 years ago

              Hi Kim,
              I have reproduced this issue and created a separate bug report about it: Setting ObjectSpace.NonPersistentChangesEnabled to False has no effect if DetailView.RaiseObjectChangedOnControlValueChanged is set to False.
              Thanks,
              Michael.

              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.