2012-08-31 3 views
2

Asp.net C#의 GRID VIEW에서 특정 열을 정렬하는 코드가 필요합니다. ASC에서 한 열을 정렬 할 때와 두 번째 열로 이동하여 정렬하려고하면 DESC로 간주됩니다. 각 열에 대해 별도의 ASC DESC 순서를 원합니다. 정렬 상태를 유지특정 열의 격자보기 정렬

을 정렬

+0

당신이 질문에 대한 코드의 일부를 추가 할 수 있습니까? –

답변

0

이 viewstate가있다 (SortDirection 및 SortExpression) 당신은 현재의 정렬 상태에 따라 올바른 LINQ 식을 생성합니다. 수동으로 그리드에 정렬 이벤트를 처리하고 난 SortExpression 및 SortDirection을 기준으로 정렬 쓴이 도우미 사용

공공 정적에 IQueryable SortBy (된 IQueryable 소스, 문자열 sortExpression, SortDirection 방향) { 을 경우 (소스 == NULL) { 새로운 ArgumentNullException ("source") throw; }

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); 

}