kendo 网格未突出显示所选行/缺少 ui 刷新
kendo grid does not hightlight seleted row / missing ui refresh
我有一个 Kendo-网格:
<kendo-grid
[data]="gridData"
[pageSize]="state.take"
[skip]="state.skip"
[sort]="state.sort"
[filter]="state.filter"
[sortable]="true"
[pageable]="true"
[filterable]="true"
[kendoGridSelectBy]="'guid'"
[selectable]="true"
[selectedKeys]="selectionCustomer"
(dataStateChange)="dataStateChange($event)"
>
<kendo-grid-checkbox-column></kendo-grid-checkbox-column>
<kendo-grid-column field="name" title="Name"></kendo-grid-column>
<kendo-grid-column field="prename" title="Prename"></kendo-grid-column>
<kendo-grid-column field="companyName" title="CompnayName"></kendo-grid-column>
<kendo-grid-column field="number" title="number"></kendo-grid-column>
<kendo-grid-column field="fullname" title="Fullname"></kendo-grid-column>
</kendo-grid>`
使用组件从 API 加载数据(作为数组,因为没有可用的 Odata)
export class CustomerKendoComponent implements OnInit {
private state: State = {
skip: 0,
take: 10,
};
private customers: Customer[] = [];
private gridData: GridDataResult = null;
private selectionCustomer: number[] = [];
constructor(
private customerApi: CustomerApi,
private ref: ChangeDetectorRef,
) { }
ngOnInit() {
this.customerApi.apiCustomerGet().subscribe(response => {
this.customers = response.customers;
this.gridData = process(this.customers, this.state);
this.ref.detectChanges();
})
}
printSelection() {
console.log(this.selectionCustomer);
}
}
如果我点击一行,没有任何反应。
没有错误,没有选择。
为了找到问题,我在 UI 中添加了一个按钮,它打印出选定的行 guid.
<button md-raised-button color="primary" (click)="printSelection()">print</button>
如果我按下按钮,控制台会打印正确的 GUID 并且该行会突出显示!但前提是我按下按钮。
我在此处的文档中看不到更多内容 https://www.telerik.com/kendo-angular-ui/components/grid/selection/
我也用 selectableSetting 试过了,但一点也没有改变。
为什么我的网格选择没有触发 "UI refresh"?
版本
"@progress/kendo-angular-grid": "^1.4.2",
"@angular/core": "~4.3.1",
抱歉再次使用 angular2 标签,我不能为 kendo-ui-angular4
创建新标签
看来问题是:
changeDetection: ChangeDetectionStrategy.OnPush,
另一个没有检查文档就复制过去的问题...
我有一个 Kendo-网格:
<kendo-grid
[data]="gridData"
[pageSize]="state.take"
[skip]="state.skip"
[sort]="state.sort"
[filter]="state.filter"
[sortable]="true"
[pageable]="true"
[filterable]="true"
[kendoGridSelectBy]="'guid'"
[selectable]="true"
[selectedKeys]="selectionCustomer"
(dataStateChange)="dataStateChange($event)"
>
<kendo-grid-checkbox-column></kendo-grid-checkbox-column>
<kendo-grid-column field="name" title="Name"></kendo-grid-column>
<kendo-grid-column field="prename" title="Prename"></kendo-grid-column>
<kendo-grid-column field="companyName" title="CompnayName"></kendo-grid-column>
<kendo-grid-column field="number" title="number"></kendo-grid-column>
<kendo-grid-column field="fullname" title="Fullname"></kendo-grid-column>
</kendo-grid>`
使用组件从 API 加载数据(作为数组,因为没有可用的 Odata)
export class CustomerKendoComponent implements OnInit {
private state: State = {
skip: 0,
take: 10,
};
private customers: Customer[] = [];
private gridData: GridDataResult = null;
private selectionCustomer: number[] = [];
constructor(
private customerApi: CustomerApi,
private ref: ChangeDetectorRef,
) { }
ngOnInit() {
this.customerApi.apiCustomerGet().subscribe(response => {
this.customers = response.customers;
this.gridData = process(this.customers, this.state);
this.ref.detectChanges();
})
}
printSelection() {
console.log(this.selectionCustomer);
}
}
如果我点击一行,没有任何反应。 没有错误,没有选择。
为了找到问题,我在 UI 中添加了一个按钮,它打印出选定的行 guid.
<button md-raised-button color="primary" (click)="printSelection()">print</button>
如果我按下按钮,控制台会打印正确的 GUID 并且该行会突出显示!但前提是我按下按钮。
我在此处的文档中看不到更多内容 https://www.telerik.com/kendo-angular-ui/components/grid/selection/ 我也用 selectableSetting 试过了,但一点也没有改变。
为什么我的网格选择没有触发 "UI refresh"?
版本
"@progress/kendo-angular-grid": "^1.4.2",
"@angular/core": "~4.3.1",
抱歉再次使用 angular2 标签,我不能为 kendo-ui-angular4
创建新标签看来问题是:
changeDetection: ChangeDetectionStrategy.OnPush,
另一个没有检查文档就复制过去的问题...