kendo grid mvc计算列未格式化

时间:2017-07-11 13:44:01

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

MVC 5,剑道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();

         }

1 个答案:

答案 0 :(得分:1)

我首选的方法是在viewmodel中执行calc,但你可以这样做:

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>