我有一個網格,我正在對來自對象的數據進行排序。對象有一些複雜的數據類型。下面是我的代碼能夠分揀ORDERID和訂單號碼BUT NOT 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'未定義爲'Order'類型 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.ArgumentException: - Expression屬性= Expression.Property(PARAM,COLUMNNAME Instance屬性 '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 no我已經嘗試過了,我收到了同樣的錯誤 - 消息:「實例屬性'Order.CustomerInfo.LastName'沒有爲類型'Order'定義」 – msbyuva
您的'OrderCustomerInfo'是否有'LastName'屬性? – rageit