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();
}
答案 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>