KendoUI Grid Server动态列绑定服务回调

时间:2013-11-19 15:56:39

标签: javascript angularjs kendo-ui kendo-grid

我试图了解KendoUI Grid的工作原理。我已成功从服务器返回分页数据,服务器端分页也正常工作。

但是我遇到动态设置列详细信息的问题,即标题既不显示也不显示模板,列标题显示绑定字段的名称。我认为问题与列初始化时有关,因为我在从服务回调后了解列的详细信息。

以下是我绑定网格的方法:

$("#kGrid").kendoGrid({
            dataSource: {
                serverPaging: true,
                schema: {
                    data: "data",
                    total: "total"
                },
                pageSize: 10,
                transport: {
                    read: function(options) {
                        var searchParam = new Model.SearchParamsCM('QuoteDomainTasks', 'QuoteList', false, options.data.page, options.data.pageSize);

                        seHttpService.GetWithParms('/spa/api/genericrequest', searchParam)
                            .then(function (result) {
                                var data = oThis.createJSONFromResults(result.data, oThis);

                                options.success(data);
                            },
                            function(result) {
                                options.error(result);
                            });
                    }
                }
            },
            columns: oThis._gridColumns, 
            scrollable: false,
            pageable: { "refresh": true, "pageSizes": true },
            sortable: true,
            filterable: true
        });

其中oThis._gridColumns填充在oThis.createJSONFromResults中。此代码位于TypeScript中。

1 个答案:

答案 0 :(得分:1)

数据源仅用于读取网格的内容,而不是其配置(在设置网格时只需要创建一次)。您需要将这两个问题分开,以便在致电oThis._gridColumns$("#kGrid").kendoGrid()具有列定义。

Kendo Grid并不真正支持动态更改列定义,因此如果您需要,您可以选择:

  • 每当列定义必须更改时重新创建整个网格
  • 手动更改内容(例如,如果只更改标题,您可以通过使用jQuery选择和编辑元素来实现)
  • 试图弄乱内部,例如类似于以下内容

(请注意,这很大程度上未经测试,可能会破坏新的Kendo UI版本)

grid.options.columns = changedColumnDefinition;
grid.table.find(">thead").empty();
grid._columns(grid.options.columns);
grid._thead();