javascript - 如何在 ASP MVC 页面中手动对 Kendo UI 网格进行排序?

标签 javascript jquery asp.net-mvc sorting kendo-grid

我有一个网格,如下所示。

如您所见,我已经将其设为可排序。但是当有人点击搜索时,我希望网格按特定字段排序 - SurveyDueDate。

如何设置网格排序所依据的字段,以及它是从搜索按钮单击事件中的 javascript 调用升序还是降序?

我在网格上看到的所有内容都只展示了如何使其可排序,并没有说明如何明确设置排序。

@(Html.Kendo().Grid<SurveyMaintenance.Models.StoreSurveyList>()
    .Name("idGridStoreSurveyList")
    .HtmlAttributes(new { ID = "idGridStoreSurveyList", Class = "k-grid-header" })
    .Columns(columns =>
    {
        columns.Bound(p => p.IsSelected)
            .ClientTemplate("<input type='checkbox' class='StoreSurveyListDeleteItemRequest' #= (IsSelected === true) ? checked='checked' : '' # onclick='StoreSurveyListFunctions.toggleStoreSurveyListDeleteItemRequestSelection(this)' />")
            .HeaderTemplate("<input type=\"checkbox\" id=\"toggleAllStoreSurveyListDeleteItems\"/>")
            .Width(40)
            .Filterable(false)
            .Sortable(false);

        columns.Bound(p => p.SurveyDueDate)
            .Template(@<text></text>)
            .ClientTemplate("#= kendo.toString(SurveyDueDate,'MM/dd/yyyy') #")
            .Width(130);

        columns.Bound(p => p.StoreCompleted)
            .Width(110);

        columns.Bound(p => p.SurveyName);

        columns.Bound(p => p.DeliveryDate)
            .Template(@<text></text>)
            .ClientTemplate("#= kendo.toString(DeliveryDate,'MM/dd/yyyy') #")
            .Width(130);

        columns.Bound(p => p.SupplierName)
            .Width(200);
    })
    .Sortable()
    .Filterable()
    .Navigatable()       
    .Resizable(resize => resize.Columns(true))
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(500)
        .ServerOperation(false)
        .Events(events => events.Error("grid_error_handler"))
        .Model(model => { model.Id(p => p.SurveyID); })
        .Read(
           read => read.Action("GetStoreSurveyList", "StoreSurveyList").Data("additionalDataStoreSurveyList")
        )
    )
)

最佳答案

我想通了。

在 javascript 调用中,我放入了以下代码:

    var kendoGrid = $("#idGridSurveyList").data("kendoGrid");
    var dsSort = [];
    dsSort.push({ field: "DeliveryDate", dir: "desc" });
    kendoGrid.dataSource.sort(dsSort);

kendo 网格的数据源有一个排序方法,您可以向它传递一个包含排序字段和方向的数组。

关于javascript - 如何在 ASP MVC 页面中手动对 Kendo UI 网格进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289205/

相关文章:

javascript - 如何通过每次点击选择数组的新索引

Javascript - 取消选择复选框,项目互斥

c# - 如何从通用列表创建 View ?

javascript - 如何在每次加载页面时运行代码

c# - 如何使用 asp.net 将 kafka 消息保存到文件中

asp.net-mvc - VS2012 ProjectTypeGuids 在安装 ASP.NET 和 Web Tools 2013.1 后打开时丢失

javascript - 如果输入为空,jQuery STOP 按钮不会出现

javascript - 防止 DOM 元素折叠时页面跳转

javascript - HTML:根据其他div的高度自动增加高度

javascript - 自适应 AngularJS 指令