2011-03-08 5 views
1

Gridview를 사용자 지정 개체에 바인딩합니다. 그러나 표시되는 필드의 순서가 올바르지 않습니다. Gridview를 사용자 지정 개체에 바인딩 할 때 필드 표시 순서를 설정할 수있는 방법이 있습니까?Gridview 열 표시 순서

미리 감사드립니다.

+0

이 답변을 살펴보면 도움이 될 것입니다. http://stackoverflow.com/a/28611217/215752 – Hogan

답변

0

:

"는 GetProperties를 방법은 알파벳 또는, 특정 순서로 속성을 반환하지 않습니다 그 순서가 다르기 때문에 당신의 코드는 반환되는 프로퍼티에 의존해서는 안됩니다. "

직접 주문해야합니다 (예 : Array.Sort). 다음은이 선언의 지시 있다는 보장하기 위해 몇 가지 추가 정보 및 고온에서도 예입니다 : Linq에와 http://www.sebastienmahe.com/v3/seb.blog/2010/03/08/c-reflection-getproperties-kept-in-declaration-order/ 은 심지어 더 간단 :

type.GetProperties().OrderBy(x=>x.MetadataToken) 

IComparable를 구현해야 사용자 정의 개체를 주문하거나 당신은을 제공해야합니다 IComparer을 정렬 함수의 매개 변수로 사용하십시오.

+0

안녕하세요, Tim Schmelter, IEnumerator, IEnumerable, ICustomTypeDescriptor 인터페이스를 구현했습니다 .Sorting은 다음 우선 순위이지만 필드의 표시 순서를 설정하는 방법을 기대하고 있습니다. – ramu

+0

@Ramu : TemplateField 또는 BoundFields를 직접 GridView-Columns 컬렉션에 추가 할 수 있습니다. 'AutogenerateColumns = false' 만 설정하면됩니다. 여기에 예제가 있습니다. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx –

+0

고맙습니다. 제가 살펴 봅니다. – ramu

-1

이전에 발견 한 링크가 잘못되어 죄송합니다. 의견을 주셔서 감사합니다. GridView.AutoGenerateColumns가 true로 설정되면 을 데이터 소스의 열 순서를 변경할 수 있음을 알았습니다. AutoGenerateColumns가 false 인 경우 코드에서 표를 작성하고 바인딩 할 때 열을 변경할 수 있습니다. 예를 들어,

DataTable dt = new DataTable(); 
dt.Columns.Add("Column1", typeof(string)); 
dt.Columns.Add("Column2", typeof(string)); 

dt.Rows.Add(new object[] { obj1.property1, obj2.property2 }); 
//... 

Grid1.DataSource = dt; 
Grid2.DataBind(); 
+0

제공된 링크는 XtraGrid에서만 작동합니다. GridViewColumn에는 VisibleIndex 속성이 없습니다. –

+0

당신은 asp.net GridView합니까? –

0

경우가 ASP.NET 그리드 뷰에 대해 말하기는 당신은 다음 AutoGenerate를 열을 끄고 원하는 순서 수동으로 열을 추가해야합니다.

그것도 순서가 MS exposes로 사용자 정의 개체의 속성의 선언 순서와 동일하지는 않습니다
+0

안녕 Pr0fess0rX, 또한 사용자 지정 데이터 object.But ICustomTypeDescriptor 구현하는 표시된 필드에 올바른 순서가 아닙니다. – ramu