【问题标题】:Using Kendo Grid with Server Side Filters and Server Side Sorting, Field = NULL?将 Kendo Grid 与服务器端过滤器和服务器端排序一起使用,字段 = NULL?
【发布时间】:2013-09-24 19:25:59
【问题描述】:

我正在使用带有服务器端过滤和服务器端排序的 Kendo Grid。在我的数据源传输读取方法中,该字段始终为空。有什么建议吗?

这是我初始化网格的代码:

var gridDataSource = new kendo.data.DataSource({
            transport: {
                read: {
                    url: '@Url.Action("Read", "GridModule")',
                    type: 'POST',
                    contentType: 'application/json'
                },
                parameterMap: function (options) {
                    options.assignmentFilters = assignmentFilters;
                    return JSON.stringify(options);
                }
            },
            pageSize: 20,
            serverPaging: true,
            serverSorting: true,
            serverFiltering: true,
            schema: {
                model: {
                    fields: {
                        LastSurveyDate: { type: "date" },
                        LastNoteDate: { type: "date" }
                    }
                },
                data: "data",
                total: "totalRows"
            }
        });

        var $grid = $('#gridAssignments');

        if (e.firstLoad) {
            $grid.kendoGrid({
                scrollable: true,

                pageable: {
                    refresh: true,
                    pageSizes: [20, 50, 100, 500, 1000],
                    buttonCount: 12,
                    messages: {
                        display: "Showing {0}-{1} from {2} Provider Contacts",
                        empty: "No Contacts Match the Filter Criteria",
                        itemsPerPage: "Contacts per page"
                    }
                },
                reorderable: true,
                navigatable: true,
                change: gridOnChange,
                dataBound: gridOnDataBound,
                dataSource: gridDataSource,
                columnReorder: gridColumnReorder, 
                columnHide: gridColumnHide,
                columnResize: gridColumnResize,
                columnShow: gridColumnShow,
                columnMenu: {
                    sortable: false,
                    messages: {
                        columns: "Choose columns",
                        filter: "Filter",
                       }
                },
                resizable: true,
                height: '720px',
                filterable: {
                    extra: false,
                    operators: {
                        string: {
                            contains: "Contains",
                        },
                        date: {
                            lt: "Is before", 
                            gt: "Is after",
                            equal: "On"
                        }
                    }
                },
                selectable: "row",
                sortable: {
                    mode: "single",
                    allowUnsort: true
                },
                columns: [ @Html.Raw(Model.GridColumns.Columns) ]
        });
        } else {
            $grid.data('kendoGrid').setDataSource(gridDataSource);
        }

【问题讨论】:

  • 您的意思是 GridModule 的 Read 方法总是从客户端获取 null 吗?如果我没记错的话,您还必须将类型传递给参数映射函数委托,如下所示:parameterMap:function(options, type) {}。由于您缺少 arg,因此它可能没有达到您的功能。
  • 是的,你是对的。在我的阅读方法中。

标签: javascript .net kendo-ui kendo-grid


【解决方案1】:

对于遇到相同问题的任何人...

在我的例子中,我的代码运行良好,直到我向 Schema.Model.Fields 添加了两个字段。然后由于某种原因,我的网格模块的读取方法中的字段为 NULL。默认情况下,所有字段都被视为字符串,但是当我添加两个新属性时,没有使用默认值。

我必须添加我所有的网格字段

            schema: {
                model: {
                    fields: {
                        LastSurveyDate: { type: "date" },
                        LastNoteDate: { type: "date" },
                        FirstName: { type: "string" },
                        LastName: { type: "string" },
                        HasNewEval: { },
                        HasCommitmentsToGet: { },
                        OnPriorityList: { type: "string" },
                        HasProductsBelowMinimum: { type: "HasProductsBelowMinimum" },
                        Points: {},
                        Title: { type: "string" },
                        Provider: { type: "string" },
                        Phone: { type: "string" },
                        TimeZone: { type: "string" },
                        Touches: { type: "string" },
                        LastNoteText: { type: "string" },
                        VerbalAging: { type: "string" }
                    }
                },

这对我有用。

【讨论】:

  • 你能告诉我你是如何处理服务器端过滤的吗?
  • 完美。那正是我的问题。似乎不需要应用“类型”,只是该字段存在于 schema->model->fields 中(如果提供了,如果没有提供字段,它会自动正常工作)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 2019-04-30
相关资源
最近更新 更多