linq orderby未排序asc无法正常工作

时间:2012-10-28 07:17:10

标签: asp.net-mvc-3 linq kendo-ui

我在网格中返回以下信息,但它不会按照名字和姓氏命令记录第一个订单。请让我知道如何实现这一目标。我目前正在使用MVC4和kendoui网格

public ActionResult Index()
    {
        return View();
    }

public ActionResult GetSession([DataSourceRequest] DataSourceRequest request)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    return Json(GetAllSessionList().ToDataSourceResult(request),         JsonRequestBehavior.AllowGet);
} 
 private static IEnumerable<ListsViewModel> GetAllSessionList()
    {
        var context = new HEntities();

        return context.vwSessionListConfigs
            .OrderBy(x => x.FirstName).ThenBy(x => x.FamilyName)
            .Select(session => new ListsViewModel
            {
                ConsumerID = session.ConsID,
                ConsumerHCID = session.ConsHCL,
                ConsumerHRN = session.ConsHRK,
                ConsumerFirstName = session.FirstName,
                ConsumerFamilyName = session.GivenName,
                ConsumerGender = session.Gender,
            });
    }

查看:

@(Html.Kendo().Grid<Web_App.ViewModel.ListsViewModel>()

    .Name("SList")
    .HtmlAttributes(new { @Style = "align:center; font-size:10px;" })
    .Columns(columns =>
    {
        columns.Bound(p => p.ConsID).Visible(false);
        columns.Bound(p => p.ConsHCL).Width(80);
        columns.Bound(p => p.ConsHRK).Width(50);
        columns.Bound(p => p.FirstName).Width(80);
        columns.Bound(p => p.GivenName).Width(80);
        columns.Bound(p => p.ConsumerAlias).Width(45);
        columns.Bound(p => p.Gender).Width(30);

        columns.Command(commands => commands.Edit()).Width(175);      
    })
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .Pageable()
    .Selectable(s => s.Mode(Kendo.Mvc.UI.GridSelectionMode.Single))
    .Scrollable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(10)
        .ServerOperation(true)
        .Model(model => model.Id(p => p.ConsID))
        .Read(read => read.Action("GetSession", "Manage").Type(HttpVerbs.Get))
        .Update("Edit", "Manage")         
    )
    .Events(events => events
                            .Change("change"))



)

1 个答案:

答案 0 :(得分:3)

在将集合传递给ToDataSourceResult方法之前对集合进行排序并不重要。 ToDataSourceResult方法将在内部再次按模型的第一个属性对集合进行排序。

要最初对集合进行排序,您应该使用dataSource的Sort方法。

.DataSource(dataSource => dataSource
            .Ajax()
            .Sort(st => {

                st.Add(m => m.Name).Descending();
                st.Add(m => m.PersonID).Descending(); 
            })