Kendo Grid MVC 默认Page,Filter绑定

项目有一个需求,需要将Grid的分页,排序,过滤信息保存下来,并且在跳转到该功能时自动应用
实现方式

// Action
 public IActionResult Index([DataSourceRequest] DataSourceRequest request)
 {
     ViewData["returnUrl"] = Request.GetEncodedUrl();
     return View(request);
 }

// extensions
public static GridBuilder<TModel> Init<TModel>(this GridBuilder<TModel> builder, DataSourceRequest request)
    where TModel : class
{
    var component = builder.ToComponent();
    var dataSource = component.DataSource;

    if (request != null)
    {
        dataSource.PageSize = request.PageSize > 0 ? request.PageSize : 20;
        dataSource.Page = request.Page;
        dataSource.GroupPaging = request.GroupPaging;

        if (request.Filters != null)
        {
            dataSource.Filters.AddRange(request.Filters);
        }

        if (request.Sorts != null)
        {
            dataSource.OrderBy.AddRange(request.Sorts);
        }
    }
    else
    {
        dataSource.PageSize = 20;
    }

    return builder;
}

// cshtml
@(
    Html.Kendo().Grid<VM>().Init(Model)
    )

<script>
    function getNewUrl(event) {
        event.preventDefault();
        var url = new URL(document.location.href);
        var grid = $('#gridId').data("kendoGrid")
        if (grid) {
            var dataSource = grid.dataSource;
            var options = dataSource.transport.setup({
                data: {
                    page: dataSource.page(),
                    pageSize: dataSource.pageSize(),
                    sort: dataSource.sort(),
                    filter: dataSource.filter(),
                    group: dataSource.group()
                }
            }, "read")
            var data = options.data;
            url.searchParams.set("page", encodeURIComponent(data.page));
            url.searchParams.set("pageSize", encodeURIComponent(data.pageSize));
            url.searchParams.set("sort", encodeURIComponent(data.sort || ""));
            url.searchParams.set("filter", encodeURIComponent(data.filter || ""));
            url.searchParams.set("group", encodeURIComponent(data.group || ""));
        }

        return url.pathname + url.search;
    }
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容