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數據源。因此,將模型傳遞給局部視圖,並刪除指令。