如何合并 aurelia slickgrid 中两列的数据
how to combine data from two columns in aurelia slickgrid
我有一个带有开始日期和结束日期的 aurelia slickgrid table,它很好。后端 api 响应采用 odata 格式。现在我想创建一个名为 Status 的新列,状态计算如下:
<td class="col-xs-4 col-md-2">
<div>
<div if.bind="doesLicenseActivate(lic)">
Activates on ${lic.DateStart}
</div>
<div if.bind="didLicenseEnd(lic)">
Ended on ${lic.DateEnd}
</div>
<div if.bind="isLicenseCurrentlyActive(lic)">
Current License
</div>
<div if.bind="lic.IsCanceled">
Cancelled on ${lic.DateEnd}
</div>
</div>
基本上,上面的那些函数(例如 doesLicenseActivate)是一堆 Moment.js 函数,用于执行一些日期计算。我的专栏看起来像:
/* Define grid Options and Columns */
private defineMembershipGrid() {
return this.columnDefinitionsMembershipHistory = [
{ id: "DateStart", name: "Start Date", field: "DateStart", formatter: Formatters.dateEuro, sortable: true, filterable: true, minWidth: 100, },
{ id: "DateEnd", name: "End Date", field: "DateEnd", formatter: Formatters.dateEuro, sortable: true, filterable: true, minWidth: 100, },
{ id: "Duration", name: "Duration", field: "Duration", formatter: this.DurationFormatter, sortable: true, filterable: true, minWidth: 100, },
// make a status column here
];
}
这是它的样子:
这就是我想要做的,基本上是创建一个新的 Status 列,它使用前两列(开始日期和结束日期)中的值
只需使用自定义格式化程序,请参阅 Custom Formatter - Wiki 它具有 dataContext
,这是整行的项目对象。您可以使用 MomentJS 进行计算并显示“10 个月”或“当前许可证”(我猜最后一个是计算和 switch/case)。您可以在自定义格式化程序中做任何您想做的事情,每次重新渲染网格时都会重新计算它,如果您更改另一个单元格的值,它也会重新计算。不过,您可能无法过滤和排序,在这种情况下,您可能不想显示过滤器并删除排序。
我有一个带有开始日期和结束日期的 aurelia slickgrid table,它很好。后端 api 响应采用 odata 格式。现在我想创建一个名为 Status 的新列,状态计算如下:
<td class="col-xs-4 col-md-2">
<div>
<div if.bind="doesLicenseActivate(lic)">
Activates on ${lic.DateStart}
</div>
<div if.bind="didLicenseEnd(lic)">
Ended on ${lic.DateEnd}
</div>
<div if.bind="isLicenseCurrentlyActive(lic)">
Current License
</div>
<div if.bind="lic.IsCanceled">
Cancelled on ${lic.DateEnd}
</div>
</div>
基本上,上面的那些函数(例如 doesLicenseActivate)是一堆 Moment.js 函数,用于执行一些日期计算。我的专栏看起来像:
/* Define grid Options and Columns */
private defineMembershipGrid() {
return this.columnDefinitionsMembershipHistory = [
{ id: "DateStart", name: "Start Date", field: "DateStart", formatter: Formatters.dateEuro, sortable: true, filterable: true, minWidth: 100, },
{ id: "DateEnd", name: "End Date", field: "DateEnd", formatter: Formatters.dateEuro, sortable: true, filterable: true, minWidth: 100, },
{ id: "Duration", name: "Duration", field: "Duration", formatter: this.DurationFormatter, sortable: true, filterable: true, minWidth: 100, },
// make a status column here
];
}
这是它的样子:
这就是我想要做的,基本上是创建一个新的 Status 列,它使用前两列(开始日期和结束日期)中的值
只需使用自定义格式化程序,请参阅 Custom Formatter - Wiki 它具有 dataContext
,这是整行的项目对象。您可以使用 MomentJS 进行计算并显示“10 个月”或“当前许可证”(我猜最后一个是计算和 switch/case)。您可以在自定义格式化程序中做任何您想做的事情,每次重新渲染网格时都会重新计算它,如果您更改另一个单元格的值,它也会重新计算。不过,您可能无法过滤和排序,在这种情况下,您可能不想显示过滤器并删除排序。