2011-09-21 1 views
1

열 헤더를 클릭하여 정렬 할 수있는 gridview에 바인딩하는 컬렉션을 만들려면 아래 코드가 있습니다. 여기서 문제는 "IPerson"이 컴파일 타임에 알려지지 않았다는 것입니다. 델리게이트 형식을 gridview 데이터 소스에서 가져 와서 결정할 수 있습니다.델리게이트 형식을 컴파일 타임에 알 수없는 식 (TDelegate)을 만드는 방법은 무엇입니까?

Dim list As List(Of IPerson) = CType(Session("DataSource"), List(Of IPerson)) 
Dim dataType As Type = list.GetType.GetGenericArguments(0) 
Dim param = Expression.Parameter(dataType, e.SortExpression) 
Dim sortExpression = Expression.Lambda(
     Of Func(Of IPerson, Object))(
     expression.Convert(
      Expression.Property(param, e.SortExpression), GetType(Object) 
      ), param) 

GridView1.DataSource = list.AsQueryable.OrderBy(sortExpression) 
GridView1.DataBind() 
+0

그래서'list'가'object'로 입력되면'IPerson '이 필요한 유일한 곳은'Expression.Lambda'에 유형 인수로 전달하는 것입니다, 맞습니까? 못생긴하지만 단순한 반사 코드가 일을해야합니다 ... – AakashM

답변

관련 문제