kendo 网格 mvc 计算列未格式化

kendo grid mvc calculated column not formating

MVC 5,Kendo 2017.2.504

我无法让计算列正确格式化(货币)。

我试过在 ClientTemplate 中使用 javascript 函数调用,但从未调用过 js 函数。

   .ClientTemplate("#=formatCurrency(TotalAmount*Deductibility)#")

   function formatCurrency(value) {
    var result = kendo.toString(value, "c");
    return result;
  }

也试过直接使用kendo.toString

  .ClientTemplate("#= kendo.toString(TotalAmount*Deductibility, 'C') #")

  .ClientTemplate("#= kendo.toString(TotalAmount*Deductibility, 'c') #")

这是网格定义(只显示需要的列)。需要注意的一件事, 网格具有可扩展行(在 DetailTemplate 中定义),可扩展行使用 ajax 数据源,但外部网格没有。我认为这是问题的一部分,我正在使用 ClientTemplate(在外部网格中)但数据源不是 Ajax。关于网格的其他一切都按预期工作:

  Html.Kendo().Grid(Model)
              .Name("TaxClass")
              .Columns(columns =>
              {
                 ...
                columns.Template(c => c.TotalAmount * c.Deductibility).Title("Amount Deductible").ClientTemplate("#=formatCurrency(TotalAmount*Deductibility)#")
                            .HtmlAttributes(new {@class = "currency"}).Width(110);
                    })
             .DetailTemplate(
                 ...

             )
             .Filterable()
             .DataSource(dataSource => dataSource.Server())
             .Render();

         }

我的首选方法是在视图模型中进行计算,但您可以这样做:

columns.Template(c => { })
       .ClientTemplate("#= kendo.toString(deductibleAmount(data),'c')#")
       .HtmlAttributes(new {@class = "currency"}).Title("Amount Deductible").Width(110);

然后添加脚本:

<script type="text/javascript">
    //Passed data contains current row model
    function deductibleAmount(data) {
        return data.TotalAmount * data.Deductibility;
    }
</script>