Asp.net C# の GRID VIEW で特定の列の並べ替えに関するコードが必要です。ASC で 1 つの列をソートし、2 番目の列に移動してソートしようとすると、DESC として取得されます。列ごとに個別の ASC DESC オーダーが必要です。
1 に答える
0
仕分け用
並べ替え状態をビューステートに保つ (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 に答える