0

J'ai une grille de hiérarchie Kendo MVC. Mon exemple est simplifié pour la lisibilité.Modèle vide dans le modèle d'éditeur de fenêtres contextuelles pour Kendo MVC Grid Create, aucune valeur par défaut

  @(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")) 
     ) 
      ) 

Voici mon gestionnaire d'événements javascript. Lorsque vous observez l'objet e.model du gestionnaire après avoir cliqué sur le bouton de création, j'ai les valeurs par défaut que j'ai définies précédemment dans la grille avec 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 Quand mon modèle pop-up ouvre, le modèle n'a pas de données. Comment puis-je obtenir des données dans le modèle? J'ai des éléments dans l'éditeur de popup qui ont besoin des valeurs des grilles parentales.

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

Répondre

1

Dans votre événement Edit, essayez de trouver le contrôle dans une fenêtre contextuelle en utilisant son identifiant et définissez la valeur. Par exemple, dans le code ci-dessous trouve une datepicker dans mon popup et la définition de sa valeur à la propriété du modèle.

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