2017-11-30 17 views
1

검도 그리드의 날짜 열에 사용자 지정 최대 집계를 수행하고 열의 맨 아래에 ClientFooterTemplate을 사용하여 표시하려고합니다. 날짜 열 아래의 모든 날짜 값을 경우에만 최대 집계 계산 싶어요.검도 그리드에서 Date 열의 사용자 정의 최대 집계

@(Html.Kendo().Grid<InstallerWrapper>().Name(@"InstallerTable") 
     .DataSource(dataSource => dataSource 
            .Ajax() 
            .Model(m => m.Id(o => o.InstallerId)) 
            .Read(read => read 
             .Action("GetInstaller", "DataProvider", new { orderId = Model.OrderId }) 
             .Type(HttpVerbs.Post)) 
            .Aggregates(aggregates => 
            { 
             aggregates.Add(o => o.SurveyReceivedDate).Max(); 
            }) 
            .PageSize(20) 

     ) 

    .Columns(columns => 
      { 
       columns.Bound(o => o.InstallerId).Title("Installer") 
          .ClientTemplate("#=VendorName#") 
          .Filterable(false).Width(225) 
          .ClientFooterTemplate("All") 
          .Sortable(false);  

       columns.Bound(o => o.SurveyReceivedDate).Title("Survey Received") 
.HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }) 
.Filterable(false) 
.ClientTemplate("#=SurveyReceivedDate#") 
        .ClientFooterTemplate("#=kendo.toString(kendo.parseDate(max),'MM/dd/yyyy')#") 
        .Sortable(false); 

      }) 

     .Selectable() 
     .Sortable() 
     .Filterable() 
     .Pageable(p => p.Refresh(true))) 

답변

1

이 기능을 사용하려면 열에 ClientFooterTemplate의 함수를 사용하십시오.

columns.Bound(o => o.SurveyReceivedDate).Title("Survey Received").HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }).Filterable(false) 
       .ClientTemplate("#=SurveyReceivedDate#") 
       .ClientFooterTemplate("#if (getMaxDateText()){# #} else{# #=kendo.toString(kendo.parseDate(max),'MM/dd/yyyy')# #} #") 
       .FooterHtmlAttributes(new { style =" color: red "}) 
       .Sortable(false); 

자바 스크립트 기능 :

<script> 
    function getMaxDateText() { 
     var surveyReceivedArray = []; 
     var data = $("#InstallerTable").data("kendoGrid").dataSource._data; 

     for (var i = 0; i < data.length; i++) { 

      surveyReceivedArray.push(data[i].SurveyReceivedDate); 

     } 

     var isAtLeastOneNull = surveyReceivedArray.some(function (o) { return o === null; }); 

     if (isAtLeastOneNull) { 
      return true; 
     } 
     else { 

      return false; 
     } 

    } 
</script>