0

我有一个网格与客户端详细模板。此详细信息模板呈现在单独的局部视图中。在这个网格中,我需要使用客户端模板来格式化一些列。不幸的是,我遇到了无效的模板错误。kendo ui详细模板内的列客户端模板中的“无效模板”错误

这是我的详细信息模板:

<script id="operationDetailTemplate" type="text/kendo-template"> 
@(Html.Kendo().TabStrip() 
    .Name(componentName: "tabStrip_#=Id#") 
    .SelectedIndex(index: 0) 
    .Animation(animation => animation.Open(open => open.Fade(FadeDirection.In))) 
    .Items(items => { 
     items.Add().Text(this.LocalResources(key: "Messages")).Content(@<text> 
      @(Html.Kendo().Grid<NotificationViewModel>() 
       .Name(componentName: "notificationGrid_#=Id#") 
       .Pageable() 
       .Scrollable() 
       .Filterable() 
       .Sortable() 
       .Columns(col => { 
        col.Bound(c => c.DateCreated).Format(value: "{0:yyyy/MM/dd HH:mm}"); 
        col.Bound(c => c.Severity); 
        col.Bound(c => c.Title); 
        col.Bound(c => c.Text).ClientTemplate(string.Format("{0}...", "#= formatter(Text, 20) #")); 
       }) 
       .DataSource(ds => ds.Ajax().Sort(sort => sort.Add(memberName: "DateCreated").Descending()) 
        .Read(read => read.Route(MessageEventControllerRoute.PostReadForOperation, new RouteValueDictionary { { "operationId", "#=Id#" }, { "culture", UICulture.ToLower() } }))) 
       .ToClientTemplate()) 
     </text> 
      ); 
     items.Add().Content(@<text> 
      @(Html.Kendo().Grid<OperationViewModel>().Name(componentName:"alternativesGrid") 
       .Columns(col => { 
        col.Bound(op => op.OperationIdFormatted); 
        col.Bound(op => op.EfficiencyRank); 
        col.Bound(op => op.WorkOrder.WorkOrderIdFormatted); 
        col.Bound(op => op.Length) 
         .ClientTemplate(value: "#if (data.Length) {# #:kendo.toString(Length.Hours, '00')#:#:kendo.toString(Length.Minutes, '00')#:#:kendo.toString(Length.Seconds, '00')# #}#") 
         .EditorTemplateName(templateName: "TimeSpan"); 
       }) 
       .DataSource(ds => ds.Ajax() 
       .Read(read => read.Route(OperationControllerRoute.PostOperationAlternatives, new RouteValueDictionary { { "workOrderId", "#=Operation.WorkOrderId#" }, { "seqNo", "#=Operation.SequenceNumber#" }, { "culture", UICulture.ToLower() } })).Model(m => m.Id(op => op.Id))) 
       .ToClientTemplate() 
      )</text>); 
    }) 
    .ToClientTemplate()) 
</script> 

由于我不能一个模板ID传给柱模板,我不知道如何避免无效的模板错误。

任何想法如何在这种情况下使用客户端模板?

问候 贝恩德

回答

0

经过一些实验,我发现两个解决方案。

  1. 退出低级网格中的客户端模板。

使用的

  .ClientTemplate(value: "\\#if (data.Length) {\\# \\#:kendo.toString(Length.Hours, '00')\\#:\\#:kendo.toString(Length.Minutes, '00')\\#:\\#:kendo.toString(Length.Seconds, '00')\\# \\#}\\#") 

代替

  .ClientTemplate(value: "#if (data.Length) {# #:kendo.toString(Length.Hours, '00')#:#:kendo.toString(Length.Minutes, '00')#:#:kendo.toString(Length.Seconds, '00')# #}#") 
  • 更改选项卡内容来按需加载。
  • 这里唯一的问题是没有调用ajax数据源。因此,将模型传递给局部视图,并删除指令。