Javascript 使用带有服务器端过滤器和服务器端排序的剑道网格,字段=NULL?

Javascript 使用带有服务器端过滤器和服务器端排序的剑道网格,字段=NULL?,javascript,.net,kendo-ui,kendo-grid,Javascript,.net,Kendo Ui,Kendo Grid,我使用的是剑道网格,带有服务器端过滤和服务器端排序。在我的数据源传输读取方法中,字段始终为空。有什么建议吗 这是我初始化网格的代码: var gridDataSource = new kendo.data.DataSource({ transport: { read: { url: '@Url.Action("Read", "GridModule")', typ

我使用的是剑道网格,带有服务器端过滤和服务器端排序。在我的数据源传输读取方法中,字段始终为空。有什么建议吗

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

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);
        }

对于遇到同样问题的人

在我的例子中,我的代码运行良好,直到我向Schema.Model.fields添加了两个字段。然后由于某种原因,我的网格模块的read方法中的字段为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" }
                    }
                },

这对我来说很有效。

您的意思是GridModule的读取方法总是从客户端获取空值吗?如果我没有弄错的话,您还必须像这样将类型传递给参数映射函数委托:parameterMap:function(options,type){}。也许它没有击中你的函数,因为你错过了arg。是的,你是对的。在我的阅读方法中。你能告诉我你是如何处理服务器端过滤的吗?太好了。那正是我的问题。甚至似乎应用“类型”都不是必需的,只是该字段出现在schema->model->fields中(如果提供了这样的字段,那么如果没有提供字段,它会自动正常工作)。