개체에서 데이터를 바인딩하는 표가 있습니다. Object에는 몇 가지 복잡한 데이터 유형이 있습니다. 다음은 내 코드 ORDERID 및 OrderNumber를하지만 CustomerInfo 재산권 정렬 할 수 있습니다C#의 사용자 정의 데이터 유형 (사용자 정의 특성)의 정렬 문제
등급 :
public class Order
{
public Int32 OrderID{ get; set; }
public String OrderNumber { get; set; }
public Customer CustomerInfo { get; set;}
}
public class Customer
{
public Int64 CustomerNumber { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String Phone { get; set; }
}
내 프런트 엔드 그리드 열이 나는 통과하고 때 열 중 하나가
<asp:TemplateField HeaderText="Last Name" ItemStyle-Width="15%" SortExpression="OrderCustomerInfo.LastName">
<ItemTemplate>
<%# Eval("OrderCustomerInfo.LastName") %>
</ItemTemplate>
</asp:TemplateField>
입니다 정의하고있다 정렬 식 : OrderCustomerInfo.LastName 아래 열을 인식하지 못합니다 내 정렬 함수, 오류가 발생했습니다 -
인스턴스 속성 'OrderCustome rInfo.LastName ''형식 '에 대해 정의되지 않았습니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.
예외 정보 : System.ArgumentException : - 표현 속성 = Expression.Property (PARAM, COLUMNNAME 인스턴스 속성 'OrderCustomerInfo.LastName는'타입 '주문')
오류 라인에 대한 정의되지 않은);
<%# Eval("OrderCustomerInfo.LastName") %>
이 누락 : // x.ColumnName
public static IEnumerable<T> OrderBy<T>(this IEnumerable<T> collection, string columnName, SortDirection direction)
{
ParameterExpression param = Expression.Parameter(typeof(T), "x"); // x
Expression property = Expression.Property(param, columnName); // x.ColumnName
Func<T, object> func = Expression.Lambda<Func<T, object>>( // x => x.ColumnName
Expression.Convert(Expression.Property(param, columnName),
typeof(object)), param).Compile();
Func<IEnumerable<T>, Func<T, object>, IEnumerable<T>> expression =
SortExpressionBuilder<T>.CreateExpression(direction);
IEnumerable<T> sorted = expression(collection, func);
return sorted;
}
'OrderCustomerInfo.LastName' 또는'Order.CustomerInfo.LastName'이어야합니까? – Powerlord
@Powerlord 아니요 이미 동일한 오류가 발생했습니다. "메시지 :"인스턴스 속성 'Order.CustomerInfo.LastName'이 '주문'유형에 대해 정의되지 않았습니다. " – msbyuva
'OrderCustomerInfo'에 'LastName' 속성이 있습니까? – rageit