SomeRandomDeveloper
SomeRandomDeveloper

Reputation: 489

Model Empty in Popup Editor template for Kendo MVC Grid Create, No default value

I have a Kendo MVC hierarchy grid. My example is simplified for readability.

            @(Html.Kendo().Grid<LeagueViewModel>(Model.Leagues)
        .Name("grid_#=LeagueTypeId#")
        .Columns(columns => { })
        .ToolBar(toolbar =>
        {
            toolbar.Create().Text("Add New League(Window)");
        })
        .Editable(editable => editable.Mode(GridEditMode.PopUp)
            .TemplateName("LeagueEdit")
            .Window(w =>
            {
                w.Position(p => p.Top(200)); // position not working, need to center more vertically
                w.Width(800);
            }
                            )
                        )
        .Events(e => e.Edit("leagueEdit"))
        .DataSource(dataSource => dataSource
            .Server()
            .Model(model =>
            {
                model.Id(p => p.LeagueID);
                model.Field(l => l.strSportId).DefaultValue("#=SportId#"); // set default value with parent grid data
                model.Field(l => l.strLeagueTypeId).DefaultValue("#=LeagueTypeId#"); // set default value with parent grid data
            }
            )
            .Read(read => read.Action("Bound_League_Read", "Configuration", new { _leagueTypeId = "#=LeagueTypeId#" }))
            .Create(create => create.Action("League_Create", "Configuration"))
        )
            )

Here is my javascript event handler. When observing the e.model object from the handler after the create button is clicked i have the default values i set earlier with in the grid with DefaultValue("#=ParentProperty#").

        function leagueEdit(e) {

                // setting these with default value on model, 
                // had to have string variants to pass over because template expression syntax                  
                e.model.SportId = parseInt(e.model.strSportId);
                e.model.LeagueTypeId = parseInt(e.model.strLeagueTypeId);

                }

LeagueEdit.cshtml When my popup template opens, the model has no data. How do i get data into the model? I have elements in the popup editor that need the values from the parent grids.

        <p>sport: @Model.SportId</p> <!-- value does not carry over -->
        <p>leaguetype: @Model.LeagueTypeId</p>  <!-- value does not carry over -->  

Upvotes: 0

Views: 2258

Answers (1)

reshmi k
reshmi k

Reputation: 46

In your Edit event try to find the control in popup using its Id and set the value. For example in the below code am finding a datepicker inside my popup and setting its value to the model property.

function LeagueEditEdit(e) {
    var val1 = e.container.find("input[name=CallDate]").data("kendoDatePicker");
    val1.value($('#CallDate').attr('value'));
    e.model.CallDate = val1._value;
}

Upvotes: 2

Related Questions