Kendo Hierarchical网格中的Access Id值

时间:2013-12-23 22:51:48

标签: jquery asp.net-mvc kendo-ui kendo-grid

我有一个使用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>

在运行时,我收到一个javascript错误,即item.NoteDetailsId未定义。我需要将Id传递给动作/控制器。我的视图模型确实有NoteDetailsId属性,它在模型中有一个值。

我是剑道新手,并且会在这里提供任何帮助。

1 个答案:

答案 0 :(得分:0)

有趣的是,对于kendo分层网格,它尝试在ajax调用中从服务器获取值之前呈现网格。

我通过在ajax调用上将id值传递给子网格,在渲染它们时隐藏它们并使用kendo grid自定义命令和jquery在单击子项的相应链接时调用控制器来解决了上述问题