2

Asp.net C# の GRID VIEW で特定の列の並べ替えに関するコードが必要です。ASC で 1 つの列をソートし、2 番目の列に移動してソートしようとすると、DESC として取得されます。列ごとに個別の ASC DESC オーダーが必要です。

4

1 に答える 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 に答える