【问题标题】:KendoUI MVC: Sorting with a ViewModelKendoUI MVC:使用 ViewModel 排序
【发布时间】:2014-01-29 22:57:49
【问题描述】:

我正在使用 ViewModel 类绑定到 KendoUI 网格,并且它调用效果很好,直到我尝试排序(或过滤)。在我尝试对 UserName 进行排序之前,一切正常。我确定这是因为 UserName 不是我的实体模型的属性(ErrorLog)

public ActionResult ListErrors([DataSourceRequest]DataSourceRequest request)
    {
        IQueryable<ErrorLog> errorLogs = (IQueryable<ErrorLog>)db.ErrorLogs.Include(e => e.User).OrderByDescending(e => e.ErrorLogId);
        DataSourceResult result = errorLogs.ToDataSourceResult(request, errorLog => new ErrorLogViewModel
            {
                ErrorLogId = errorLog.ErrorLogId,
                Message = errorLog.AdditionalMessage,
                UserName = errorLog.User.UserName
            });
        return Json(result);
    }

Kendo MVC 文档中似乎没有涵盖这种情况。

【问题讨论】:

    标签: kendo-ui kendo-grid kendo-asp.net-mvc


    【解决方案1】:

    通过在我的数据库查询运行后调用 ToDataSourceResult 解决:

     public ActionResult ListErrors([DataSourceRequest]DataSourceRequest request)
        {
            IQueryable<ErrorLog> errorLogs = (IQueryable<ErrorLog>)db.ErrorLogs.Include(e => e.User).OrderByDescending(e => e.ErrorLogId);
            DataSourceResult result = errorLogs.Select(errorLog => new ErrorLogViewModel
                {
                    ErrorLogId = errorLog.ErrorLogId,
                    Message = errorLog.AdditionalMessage,
                    Timestamp = errorLog.Timestamp,
                    UserName = errorLog.User.UserName
                }).ToDataSourceResult(request);
            return Json(result);
        }
    

    【讨论】:

    • 我遇到了同样的问题,你的回答很有帮助。接下来我需要弄清楚我是否可以在仍然使用 AutoMapper 的同时做同样的事情。
    【解决方案2】:

    请尝试 KendoGridBinderEx 项目而不是 [DataSourceRequest],与 AutoMapper 一起使用此方案应该可以正常工作。

    有关演示,请参阅here

    【讨论】:

    • 有趣的项目 - 会看看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多