使用带有服务器端筛选器和服务器端排序的Kendo Grid,Field = NULL?

时间:2013-09-24 19:26:00

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

我正在使用A 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);
        }

1 个答案:

答案 0 :(得分:3)

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

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

我必须添加所有Grid的字段

            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" }
                    }
                },

这对我有用。