我要自己处理gridview排序。我无法想出这个:
protected void gvPackages_Sorting(object sender, GridViewSortEventArgs e)
{
List<Package> pck = new List<Package>();
pck = Session["Packages"] as List<Package>;
var output = (from p in pck
orderby p.Department
select p); <-line that breaks
// var output = pck.OrderBy(x => x.Department).ToList(); <- I've also tried this
gvPackages.DataSource = output;
gvPackages.DataBind();
}
我得到的错误是:
至少有一个对象必须实现IComparable。
包是一个实体,所以我不明白我错过了什么。我在网上找到的其他例子反映了我上面的内容,以及它的各种迭代。我错过了什么? 我还要说,部门只是一个领域,可以让它发挥作用,在最终版本中它会更具活力。
编辑:再次感谢堆栈,我是一个很大的假人。答案 0 :(得分:5)
问题在于您尝试在部门上订购,但部门类型不知道应如何订购,因为您尚未实施IComparable,这需要指定订单的方法,例如订单由Dept.Name或Dept.Location,Dept.Size,谁知道?
答案 1 :(得分:3)
无论Department
的类型是什么,它都不会实现IComparable
。它可能是一个对象/实体/ DataRow类型。
您想按ID,名称排序吗??