希望有人可以提供帮助。尝试在 ASP.NET MVC 4 C# 中实现 jqGrid。尝试对列进行排序时,我不断收到以下错误。此列实际上是来自使用外键的对象的字段。不确定应如何更改代码以解决此问题。网格对我正在使用的模型中的字段进行正确排序,而不是来自外键的字段。我应该改用 ViewModel 吗?我正在使用 Oleg 示例中的代码。item.Name 是对象, item.Name.FullName 是我要排序的列,它会引发下面的错误。谢谢!
ORDER BY 排序键类型必须是可排序的。近成员访问表达式,第 6 行,第 3 列。
public JsonResult DynamicGridData(string sidx, string sord, int page, int rows, bool search, string filters)
{
var context = new TeamContext();
var objectContext = ((IObjectContextAdapter)context).ObjectContext;
var set = objectContext.CreateObjectSet<Team>();
var serializer = new JavaScriptSerializer();
Filters f = (!search || string.IsNullOrEmpty(filters)) ? null : serializer.Deserialize<Filters>(filters);
ObjectQuery<Team> filteredQuery =
(f == null ? (ObjectQuery<Team>)set : f.FilterObjectSet((ObjectQuery<Team>)set));
filteredQuery.MergeOption = MergeOption.NoTracking; // we don't want to update the data
var totalRecords = filteredQuery.Count();
var pagedQuery = filteredQuery.Skip("it." + sidx + " " + sord, "@skip",
new ObjectParameter("skip", (page - 1) * rows))
.Top("@limit", new ObjectParameter("limit", rows));
// to be able to use ToString() below which does NOT exist in the LINQ to Entity
var queryDetails = (from item in pagedQuery
select new { item.TeamId, item.Year, item.Name }).ToList();
return Json(new
{
total = (totalRecords + rows - 1) / rows,
page,
records = totalRecords,
rows = (from item in queryDetails
select new[] {
item.TeamId.ToString(),
item.Year,
item.Name.FullName
}).ToList()
});
}