首页 文章

动态绑定kendo网格dataSource绑定到指令

提问于
浏览
3

我在控制器中创建dataSourec

$scope.dataSource = new kendo.data.DataSource({
                  transport: {
                      read: function (e) {
                          e.success(response.data.value);
                      }
                  },
                  serverFiltering: true,
                  serverSorting: true,
                  pageSize: 20,
                  schema: {
                      model: {
                          fields: {
                              languageId: { type: 'number', editable: true, nullable: false },
                              dateStart: { type: 'date', ediitable: true },
                              dateEnd: { type: 'date', ediitable: true },
                              count: { type: 'number', editable: true, nullable: false }
                          }
                      }
                  }
              });

然后我将它绑定到我的组件

<div data-ng-if="!displayList">
    <analytics-grid data-data-source="dataSource"></analytics-grid>
</div

我把它添加到我的网格选项

ctrl.gridOptions = {
                    dataSource: ctrl.dataSource,
                    sortable: true,
                    pageable: true,
                    columns: [{
                        field: "languageId",
                        title: "language",
                        width: "120px",
                        filterable: false,
                        values: _languagesLookupDS.data().toJSON()
                    }, {
                        field: "count",
                        title: "count"
                    }, {
                        field: "dateStart",
                        title: "dateStart"
                    }, {
                        field: "dateEnd",
                        title: "dateEnd"
                    }],
                    editable: {
                        mode: 'popup',
                        confirmation: true
                    },
                    messages: { commands: { create: "" } }
                };

然后在组件视图中绑定到kendo网格

<kendo-grid data-k-options="$ctrl.gridOptions" data-k-ng-delay="$ctrl.gridOptions" data-k-rebind="$ctrl.dataSource"></kendo-grid>

当有人切换按钮时,我会显示组件视图(上面代码中的data-ng-if =“!displayList”) . 我必须将按钮切换到displayList = true,然后再切换到displayList = false,更新网格数据,为什么在我的控制器中dataSource更改时动态更新,并且按钮设置为显示kendoGrid?

1 回答

  • 1

    我通过将ctrl.gridOptions声明为函数来解决问题

    ctrl.gridOptions = function () {
                    return {
                        dataSource: ctrl.dataSource,
                        sortable: true,
                        columns: [{
                            field: "languageId",
                            title: "language",
                            width: "120px",
                            filterable: false,
                            values: _languagesLookupDS.data().toJSON()
                        }, {
                            field: "count",
                            title: "count"
                        }, {
                            field: "dateStart",
                            title: "dateStart"
                        }, {
                            field: "dateEnd",
                            title: "dateEnd"
                        }]
                    };
                }
    

    然后将其绑定到视图

    <kendo-grid data-k-scope-field="$ctrl.analyticsGrid" data-k-options="$ctrl.gridOptions()" data-k-rebind="$ctrl.dataSource"></kendo-grid>
    

    我的工作伙伴告诉我发生了问题,因为当数据源发生变化时,查看选项的对象并不知道如何解决它 . 现在它只是调用方法并获得新dataSource的选项 .

相关问题