![](/img/trans.png)
[英]How to change color of row based on particular column condition in kendo grid for angular
[英]Change the colour of row in kendo grid based on date column value in angular
<kendo-grid
[data]="gridData"
[selectable]="false"
[kendoGridSelectBy]="'Id'"
[selectedKeys]="selectedIds"
[pageable]="{ pageSizes: gridPageSizes }"
[pageSize]="state.take"
[skip]="state.skip"
[scrollable]="'none'"
[groupable]="false"
[group]="state.group"
(dataStateChange)="dataStateChange($event)"
[filterable]="false"
[filter]="state?.filter"
[sortable]="true"
[sort]="state?.sort"
[rowClass]="rowCallBack"
>
<kendo-grid-column
field="invoiceNumber"
title="Invoice Number"
>
</kendo-grid-column>
<kendo-grid-column
title="PO"
>
<ng-template kendoGridCellTemplate let-dataItem="dataItem">
{{dataItem.PO}}
</ng-template>
</kendo-grid-column>
<kendo-grid-column
field="StatusChangedDate"
title="StatusChangedDate"
filter="date"
format="{0:d}"
>
<ng-template kendoGridCellTemplate let-dataItem>
<time>{{ dataItem.StatusChangedDate | l10nDate: language:'short' }}</time>
</ng-template>
</kendo-grid-column>
</kendo-grid>
如果 StatusChangedDate 超過 1 周,如何在 kendogrid 中為整行(或記錄)着色,並在發票編號列上顯示警報圖像/符號以及發票編號
謝謝。
回調函數已經綁定到[rowClass]
屬性。 我們可以使用它來檢查自StatusChangedDate
日期以來是否已經過去一周並設置自定義背景顏色。
還要注意組件裝飾器中的encapsulation
選項。 ViewEncapsulation.None
指示 Angular 使用沒有任何封裝的全局 CSS。 最后在 CSS highlight
選擇器中添加 Kendo 網格 CSS 選擇器.k-grid tr
以設置背景顏色。
以下應該這樣做
import { Component, ViewEncapsulation } from '@angular/core';
import { RowClassArgs } from '@progress/kendo-angular-grid';
import { sampleData } from './data';
@Component({
selector: 'my-app',
encapsulation: ViewEncapsulation.None,
styles: [
`
.k-grid tr.highlight {
background-color: #ff6666;
}
`
],
template:
`
<kendo-grid id="grid"
[data]="gridData"
[resizable]="true"
[rowClass]="rowCallBack"
[selectable]="false"
[kendoGridSelectBy]="'Id'"
[pageable]="{ pageSizes: gridPageSizes }"
[pageSize]="20"
[skip]="true"
[scrollable]="'none'"
[groupable]="false"
[filterable]="false"
[sortable]="true">
<kendo-grid-column field="invoiceNumber" title="Invoice" width="40">
</kendo-grid-column>
<kendo-grid-column title="PO" width="80">
<ng-template kendoGridCellTemplate let-dataItem="dataItem">
{{dataItem.PO}}
</ng-template>
</kendo-grid-column>
<kendo-grid-column
field="StatusChangedDate"
title="StatusChangedDate"
filter="date"
format="{0:d}"
width="80">
<ng-template kendoGridCellTemplate let-dataItem>
<time>{{ dataItem.StatusChangedDate | date: 'dd/MM/yyyy' }}</time>
</ng-template>
</kendo-grid-column>
</kendo-grid>
`
})
export class AppComponent {
public gridData: any[] = sampleData;
public rowCallBack(context: RowClassArgs) {
const utcOld = Date.parse(context.dataItem.StatusChangedDate);
const utcNow = new Date().getTime();
if ((Math.abs(utcNow - utcOld)) > 604800000) { // 604800000 = 1 week in microseconds
return { highlight: true };
}
}
}
工作示例: Stackblitz
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.