2013-12-23 2 views
1

У меня есть иерархическая сетка, определенная с помощью ClientDetailTemplate следующим образом.Значение идентификатора доступа в иерархической сетке Кендо

@(Html.Kendo().Grid(Model.NotesList) //Bind the grid to NotesList 
     .Name("activityNotesGrid") 
     .Columns(columns => 
     { 

      // Create a column bound to the Date property 
      columns 
       .Bound(n => n.Date) 
       .Title("DATE") 
       .Format("{0:MM/dd/yyyy}"); 
      // Create a column bound to the Author property 
      columns 
       .Bound(n => n.Author) 
       .Title("ADDED BY"); 

     }) 
     .Filterable() 
     .Sortable() 
     .Scrollable() 
     .DataSource(dataSource => dataSource 
     .Ajax() 
     .ServerOperation(true) 
    ) 
     .Events(events => events.DataBound("grid_dataBound")) 
     .ClientDetailTemplateId("threadedNotesTemplate") 
) 


<script id="threadedNotesTemplate" type="text/kendo-tmpl" class=".k-grid-header"> 

     @(Html.Kendo().Grid<ActivityThreadedNoteModel>() 
       .Name("grid_#=NoteId#") 
       //.Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))     
       .Columns(columns => 
       { 
        //columns 
        // .Bound(p => p.RegistryId) 
        // .Title("RegistryId"); 
        //columns 
        // .Bound(p => p.RegistryDisplayName) 
        // .Title("Registry"); 
        columns 
         .Bound(p => p.Date) 
         .Format("{0:MM/dd/yyyy}"); 
        //.Title("Care Guideline"); 
        columns 
         .Bound(p => p.Author); 
        columns        
         .Bound(p => p.NoteType);      
         //.Title("Process Status"); 

         //.Title("Outcome Status"); 

        columns 
         .Bound(p => p.Note); 
        columns 
         .Bound(p => p.NoteDetailsId) 
         .ClientTemplate(
         "# if (ShowInOverview == true) { #" + 
          "<i><a href='" + Url.Action(Constants.Actions.Show_HideInOverview_Note, Constants.Controllers.PatientActivity) + "?**NoteDetailsId**= #=item.NoteDetailsId #&showInOverview=false'" + ">" + Medventive.Registry.UI.Web.Resources.RegistryMVCWeb.HideInOverview + "</a></i>" + 
         "# } else { #" + 
          "<i><a href='" + Url.Action(Constants.Actions.Show_HideInOverview_Note, Constants.Controllers.PatientActivity) + "?NoteDetailsId= #=item.NoteDetailsId #&showInOverview=true'" + ">" + Medventive.Registry.UI.Web.Resources.RegistryMVCWeb.HideInOverview + "</a></i>" + 
         "# } #" 
         ); 

       }) 
       .DataSource(dataSource => dataSource 
        .Ajax() 
        .PageSize(10) 
        .Read(read => read.Action(Constants.Actions.LoadPatientThreadedNotes, Constants.Controllers.PatientActivity, new { NoteId = "#=NoteId#" })) 
        )  
       .Pageable() 
       .Sortable() 
       .ToClientTemplate() 
     ) 

    </script> 

Во время выполнения я получаю ошибку яваскрипта, что item.NoteDetailsId не определена. Мне нужно передать Id в действие/контроллер. У моей модели просмотра есть свойство NoteDetailsId, и оно имеет значение в модели.

Я новичок в kendo и буду помогать здесь.

ответ

0

Интересно, что иерархическая сетка кендо пытается отобразить сетку, прежде чем получать значения с сервера при вызове ajax.

Я решил проблему выше, передав значения id дочерней сетке при вызове ajax, скрывая их при их рендеринге и используя пользовательскую команду и jQuery сетки kendo для вызова контроллера при нажатии соответствующей ссылки для дочернего элемента пункт.

Смежные вопросы