Model DefaultValue not passing through to PopUp Editor

2 posts, 0 answers
  1. daniel
    daniel avatar
    5 posts
    Member since:
    Feb 2011

    Posted 21 Jun 2019 Link to this post

    Hi,

    We have a grid where we set some datasource model defaultvalues. These then apply to hiddenfor fields on a popup editor template.

    This works up to version 2018.3.1017 but does not work in 2019.2.619 and earlier.

    Is there a different approach we can take which will work? Or is it a bug?

    Grid

        .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("_AuthMembership"))

     

    Grid DataSource

    .DataSource(dataSource => dataSource
                            ...
                            .Model(model =>
                            {
                                model.Id(p => p.Id);
                                model.Field(p => p.cUsername).DefaultValue(ViewBag.Email);
                                model.Field(p => p.Id).Editable(false);
                            })

     

    Editor Template contains

    @Html.HiddenFor(model => model.cUsername)  ... but it is always null now with 2019.2.619.

    Passing values around in ViewBag shows each page knows about value and it worked in 2018.3.1017.

    We want to upgrade for newer controls - what can we do please?

    Thanks,

    Daniel.

  2. Tsvetomir
    Admin
    Tsvetomir avatar
    754 posts

    Posted 26 Jun 2019 Link to this post

    Hi Daniel,

    Thank you for sharing your observations. 

    In general, the value set via the DefaultValue configuration should be applied only when the field is nullable. With the latest version of the Kendo UI suite, the serialization has been slightly changed. Now the nullable property is serialized. The string by default is a nullable type and that is why its default value is not applied. 

    A GitHub issue is logged which aims to clarify whether the default value has to be always applied or it should be applied only under certain circumstance. The link to the issue could be found here:

    https://github.com/telerik/kendo-ui-core/issues/5139

    As a workaround on how to still apply the default value, you might do it manually. Namely:

    1. Subscribe to the BeforeEdit event handler:

    .Events(ev=>ev.BeforeEdit("onBeforeEdit"))

    2. Apply the value to the relevant field:

    function onBeforeEdit(e) {
        if(e.model.isNew()){
            e.model.cUserName= "Custom Value";
        }
    }

    Let me know in case any questions arise.


    Kind regards,
    Tsvetomir
    Progress Telerik
    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top