在Kendo for Angular中不刷新网格数据

时间:2018-07-29 20:27:04

标签: angular kendo-ui kendo-grid kendo-ui-angular2

In this plunk我有一个Kendo for Angular网格,它使用kendoGridBinding指令绑定内存中的数据。

我需要做的是操纵数据模型并在网格中反映每个插入/更新/删除。

例如,在插件中有一个按钮,如果单击该按钮,它将从dataGrid第一行中删除,但是该更改不会反映在网格中。我在文档中找到了notifydatachange语句,但是它不起作用(如您在插件中所见)。如何使网格刷新数据?

@Component({
    selector: 'my-app',
    template: `
        <kendo-grid #grid
            [kendoGridBinding]="gridData"
            [pageSize]="4"
            [pageable]="true">
            <kendo-grid-column field="CompanyName" [width]="140"></kendo-grid-column>
            <kendo-grid-column field="ContactName" [width]="120"></kendo-grid-column>
            <kendo-grid-column field="City" [width]="100"></kendo-grid-column>
            <kendo-grid-column field="ContactTitle" [width]="130"></kendo-grid-column>
        </kendo-grid>
        <button (click)="delFirst()">delete first row</button>
    `
})
export class AppComponent {

    @ViewChild('grid') grid: GridBinding;

    public gridData: any[] = customers;

    delFirst() {
      this.gridData.splice(0,1);
      this.grid.notifyDataChange();
      alert("First row deleted");
    }

}

2 个答案:

答案 0 :(得分:2)

如果需要更新绑定指令,则应设置一个新实例:

delFirst() {
    this.gridData.splice(0,1);
    this.gridData = this.gridData.slice(0);
}

delFirst() {
    this.gridData = this.gridData.slice(1);
}

否则,angular不会检测到更改,也不会更新指令。

答案 1 :(得分:1)

您没有将数据分配回网格,而是将其更改为

delFirst() {
      this.gridData = this.gridData.slice(1);
 }

DEMO