我想要关于在 Asp.net C# 中的 GRID VIEW 中对特定列进行排序的代码。当我在 ASC 中对一列进行排序时,当进入第二列并尝试对其进行排序时,将其作为 DESC。我想要每列单独的 ASC DESC 顺序。
问问题
703 次
1 回答
0
用于排序
保持排序状态为 viewstate(SortDirection 和 SortExpression) 你根据当前排序状态生成正确的 linq 表达式。手动处理网格中的 Sorting 事件,并使用我编写的这个助手按 SortExpression 和 SortDirection 进行排序:
public static IQueryable SortBy(IQueryable source, string sortExpression, SortDirection direction) { if (source == null) { throw new ArgumentNullException("source"); }
string methodName = "OrderBy";
if (direction == SortDirection.Descending) {
methodName += "Descending";
}
var paramExp = Expression.Parameter(typeof(T), String.Empty);
var propExp = Expression.PropertyOrField(paramExp, sortExpression);
// p => p.sortExpression
var sortLambda = Expression.Lambda(propExp, paramExp);
var methodCallExp = Expression.Call(
typeof(Queryable),
methodName,
new[] { typeof(T), propExp.Type },
source.Expression,
Expression.Quote(sortLambda)
);
return (IQueryable<T>)source.Provider.CreateQuery(methodCallExp);
}
于 2012-08-31T09:36:07.323 回答