2009-11-20 3 views
3
나는 동적 데이터 애플 리케이션을 가지고 있고 그래서 같은 여러 필드를 기반으로 정렬하고 싶습니다. DisplayColumn이 둘 이상의 필드를 지원하지 않는 것 같습니까?

답변

1

다음이 당신이 할 수있는 방법입니다 .IsPostBack) {
(table.Name == "프로젝트")
{

GridView1.Sort ("ClientDetail.CompanyName 오름차순, 프로젝트 이름 ASC"SortDirection.Ascending 있으면);

} 

}

당신은 또한 순서 중 하나를 오름차순 또는 각 열에 대해 내림차순으로 제공 할 수 있습니다.

2

DisplayColumn 특성의 SortColumn 매개 변수는 GridView에서 정렬 될 때가 아니라 (예 : DropDownList의 경우) 외부 엔터티 (예 : DropDownList)에서 사용될 때이 엔터티를 정렬하는 데 사용할 열을 지정합니다 DB).

뿐만 아니라 SO 여기 참조 : ASP.NET Dynamic Data DisplayColumn Attribute Causing Sorting Issue

MSDN이 당신이 만들어 여러 열을 정렬 할 수 있습니다 (뿐만 아니라 DB DropDownLists에 정렬) 찾고있는 여전히 경우 http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displaycolumnattribute.aspx

이 두 열을 결합하는 엔티티의 사용자 정의 특성

예 :

[DisplayColumn("FieldName", "SortColumn")] 
public partial class Employee 
{ 
    public string SortColumn 
    { 
     get { return Field1 + Field2; } 
    } 
} 
-1

네, 그것은 여러 분야를 지원하지 않습니다. 이 시도 할 수 있습니다 : 다음

[DisplayColumn("FieldName", "Field1 ASC, Field2 DESC, Field3")] 

Page_LoadList.aspx의에 :

var displayColumn = table.GetAttribute<DisplayColumnAttribute>(); 
if (displayColumn != null && displayColumn.SortColumn != null) 
{ 
    GridView1.Sort(displayColumn.SortColumn, 
    displayColumn.SortDescending ? SortDirection.Descending : SortDirection.Ascending); 
} 
+0

물론,이 작동하면 수동으로 정렬하지만 거의 망쳐 놨 최대 동적 일반적으로 데이터 및 어떤 노란색 화면을 발생하는 경우 자동 정렬을 시도 했으므로 나쁜 생각입니다. – Aaronaught

+0

@Aaronaught, 더 좋은 방법은 무엇입니까? –

+0

성능 문제가 아닌 경우 Aaron의 대답이 적용됩니다. 그렇지 않으면 서버에서 인덱싱 할 수있는 계산 된 열을 사용합니다. DD가 방금 선택한 문자열을'ORDER BY '로 선택했지만 유감 스럽지만 그것이 작동하지 않는다면이 작업이 궁극적으로 하나의 열을 합성하여 프레임 워크 내에서 작업하는 것보다 궁극적으로 끝나기 쉽습니다. – Aaronaught

관련 문제