Apply Edit Template after adding new data

7 posts, 1 answers
  1. HDC
    HDC avatar
    214 posts
    Member since:
    Dec 2010

    Posted 23 Dec 2011 Link to this post

    I have a raddataform with two templates:

    Edit Template
    AddNew Template

    The DomainDataSource is bound to a collection of Customers

    I load the dataform and using "Editor.AddNewItem()", the editor will show the AddNew template... fine

    I have added a "Save" button to the dataform by overriding the base controltemplate. When the user clicks the "Save" button, an MVVM command will call SubmitChanges on the DomainDataSource.

    I have hooked up the ChangesSubmitted event of domaindatasource... it will now load the customer that was just added:
    QueryParameter qp = new QueryParameter();
    qp.Value = (e.ChangeSet.AddedEntities[0] as Customer).OrganizationUserId;
    qp.ParameterName = "organizationUserId";
    organizationUserDomainDataSource.QueryParameters[0] = qp;
    organizationUserDomainDataSource.Load();

    This works fine... the dataform will show the added record, but the editor continues to use the AddNew template... how can i switch to the edit template?
  2. Maya
    Admin
    Maya avatar
    4062 posts

    Posted 28 Dec 2011 Link to this post

    Hi Peter,

    Could you try to invoke CommitEdit command of RadDataForm as well? Do you get the same behavior ? 

     

    Greetings,
    Maya
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  3. DevCraft banner
  4. HDC
    HDC avatar
    214 posts
    Member since:
    Dec 2010

    Posted 28 Dec 2011 Link to this post

    Hi Maya,

    Does not change anything, the AddNew template remains the active template

    Best Regards,

    Peter
  5. Maya
    Admin
    Maya avatar
    4062 posts

    Posted 28 Dec 2011 Link to this post

    Hi,

    I have tried to reproduce the issue you reported, but still without any success. Could you share a bit more information about your exact scenario ? Generally, any relevant information and code-snippet would be helpful so that I could simulate your scenario.

    All the best,
    Maya
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  6. HDC
    HDC avatar
    214 posts
    Member since:
    Dec 2010

    Posted 28 Dec 2011 Link to this post

    Hi Maya,

    I would be very interested in seeing that sample wherein this works if you have one.

    The scenario i'm using is quite complicated and it has a lot of code. It also uses MVVM.

    I did the following:

    I have create a custom dataform component "ExqiDataForm" that inherits from RadDataForm. The reason why i did that is so that i could override the control template for all of the RadDataForms of that type. In the control template i added a third button "Save".

    I have created a RadWindow for editing the details of an Entity called "OrganizationUser". On that window i have placed a ExqiDataForm with two templates... one for Adding and one for Editing an OrganizationUser. The dataform is bound to a DomainDataSource.

    When the user clicks on the Add button in the main application, it will instantiate the RadWindow containing the ExqiDataForm and it will execute following code on the ExqiDataForm:
    OrganizationUsersEditor.AddNewItem(); 

    This will effectievely make the OrganizationUserEditor display the AddNew template.

    When the user clicks on the SAVE button on the ExqiDataForm, it will execute an MVVM command that will execute a SubmitChanges() on the RadDomainDataSource. I have also hooked the SubmittedChanges event on the DomainDataSource bound to the dataform. So when SubmitChanges is executed in MVVM, the SubmittedChanges event is fired right after. In this event, i reload the DomainDataSource like this:
    QueryParameter qp = new QueryParameter();
    qp.Value = (e.ChangeSet.AddedEntities[0] as OrganizationUser).OrganizationUserId;
    qp.ParameterName = "organizationUserId";
    organizationUserDomainDataSource.QueryParameters[0] = qp;
    organizationUserDomainDataSource.Load();

    This is necessary, otherwise the DomainDataSource will not contain the database record that we will edit straight after. It is here that it goes wrong... i would expect the DataForm to be in edit mode right after this load() command, but it is not.

    What am i doing wrong?

    Best Regards,

    Peter


  7. Answer
    Maya
    Admin
    Maya avatar
    4062 posts

    Posted 03 Jan 2012 Link to this post

    Hello Peter,

    I am attaching the sample project I used for the test. As I am not aware of your custom command, I just handled Click event of the Save button and called the CommitEdit() and SubmitChanges() methods. Still. once the Save button is pressed, the new item is saved and the template for a new item is change with a one for read-only mode.  
    Could you take a look at the application and let me know whether you can get the same behavior on it as the one in your project ? Is there anything that I am missing ?

    All the best,
    Maya
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  8. HDC
    HDC avatar
    214 posts
    Member since:
    Dec 2010

    Posted 04 Jan 2012 Link to this post

    Hi Maya,

    Thanks for putting up the effort for creating a demo app.

    My situation is quite different because i'm using DataTemplates to edit the data.

    Because the command executed by the save button is in a viewmodel, it's not so easy to execute CommitEdit on the dataform object.

    So I have leaked the DataForm to the viewmodel and executed the "CommitEdit" on it in the viewmodel. This has done the trick and the dataform now switches from AddNew template to the Edit template without problems.

    It's not particularly "clean", but i don't see any other option right now and it does solve my problem.

    Thanks a lot for you help!

    Peter
Back to Top
DevCraft banner