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>
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>