0

我正在使用 ASP .NET MVC 4 开发一个应用程序,它将使用 Kendo 网格将结果填充为摘要。我正在使用服务器端操作(分页、过滤和排序)。我曾经通过脚本生成网格,而不是使用 kendo UI 提供的 MVC 包装器。

我有一个场景,用户将从查询字符串本身给出过滤器。示例 URL 如下所示

http://localhost/Summary/Audit?Startime=19/02/1013&Endtime=12/01/2013&Name=User1

我能够获取和整理查询字符串,并存储在内存位置。在创建网格本身时,我需要将这些值作为过滤器集合(默认为控制器)传递。有没有办法实现上述场景?而且,当用户选择任何过滤器字段时,我需要在过滤器框(过滤器表单)中填充这些值。谢谢。

下面是我用来通过脚本创建网格的方式

`var grid = $("#gridSummary").kendoGrid({
    dataSource: {
        type: "aspnetmvc-ajax",
        dataType: "json",
        transport: {
            read: "/Summary/GetAudit",
            parameterMap: function (data, type) {
                if (type == "read") {
                    if (data.filter) {
                        if (data.filter.filters) {
                            var FilterCol = "";
                            var coldelmtr = "<::>";
                            var rowdelmtr = "{::}";
                            for (var i = 0; i < data.filter.filters.length; i++) {
                                if (FilterCol.length > 0)
                                    FilterCol += rowdelmtr;
                                FilterCol += data.filter.filters[i].field + coldelmtr + data.filter.filters[i].value;
                            }
                        }
                    }
                    return {
                        page: data.page,
                        pagesize: data.pageSize,
                        filters: FilterCol
                    }
                }
            }
        },
        pageSize: 50,
        schema: { data: "Data", total: "Total",
            model: {
                fields: {
                    DateTime: { type: "date" },
                    Name: { type: "string" },
                    Action: { type: "string" },
                    On: { type: "string" },
                    Type: { type: "string" },
                    By: { type: "string" }
                }
            }
        },
        serverPaging: true,
        serverFiltering: true,
        serverSorting: false,
        serverAggregates: true
    },
    scrollable: {
        virtual: true
    },
    sortable: true,
    resizable: true,
    filterable: true,
    filterMenuInit: function (e) {
        if (e.field === "DateTime") {
            var firstValueDropDown = e.container.find("select[data-role='dropdownlist']:eq(0)").data("kendoDropDownList");
            //                firstValueDropDown.readonly();
            firstValueDropDown.wrapper.hide();

            var secondValueDropDown = e.container.find("select[data-role='dropdownlist']:eq(1)").data("kendoDropDownList");
            //secondValueDropDown.readonly();
            secondValueDropDown.wrapper.hide();

            var thirdValueDropDown = e.container.find("select[data-role='dropdownlist']:eq(2)").data("kendoDropDownList");
            thirdValueDropDown.select(1);
            //thirdValueDropDown.readonly();
            thirdValueDropDown.wrapper.hide();
        }
    },
    columns: columnsCollec
});`
4

1 回答 1

1

你可以看看这个示例项目,它展示了如何使用 ASP.NET MVC 和 Kendo UI(没有 ASP.NET MVC 包装器)实现服务器端分页、排序和过滤:https ://github.com/telerik/ kendo-examples-asp-net-mvc/tree/master/grid-crud

于 2013-08-19T11:32:37.383 回答