2012-04-09 63 views
1

嵌套集合我有一個列表對象環通在Repeater控件

List<Documents> 

了,裏面我有帳戶的另一個列表清單。

List<Accounts> 

從我隱藏我連接列表到中繼器控制

rptDocumentListings.DataSource = List<Documents>; 
rptDocumentListings.DataBind(); 

雖然中繼環通在列表中的每個項目我希望它也環通賬戶每窩列表,然後呈現出與
標籤。這裏是我到目前爲止已經試過:

//in the dataRepeater 
<%# parseAccountNumbers(Eval("Accounts"))%> 

//method in codebehind 
public string parseAccountNumbers(List<Account> accounts) 
    { 
     string allAccounts = string.Empty; 

     foreach (var item in accounts) 
     { 
      allAccounts += string.Format("{0}<br />", item.AccountNumber); 
     } 

     return allAccounts; 
    } 

我得到的錯誤是對象‘爲‘「不能從轉換’System.Collections.List’ 可有人請點我在正確的方向?提前致謝。

回答

5

變化

<%# parseAccountNumbers(Eval("Accounts"))%> 

<%# parseAccountNumbers((List<Account>)Eval("Accounts"))%> 

DataBinder.Eval返回Object和你的方法需要List<Account>

+0

它使任何意義將類集合綁定到列** Vs **將其綁定到類的屬性並將該列表作爲數據源分配給Repeater? – Pankaj 2012-04-09 17:01:21

+0

代碼隱藏帳戶不斷返回爲空。有什麼理由呢? – rross 2012-04-09 17:05:23

+1

這不是一個帳戶對象列表。您可以將您的方法簽名更改爲parseAccountNumbers(對象帳戶)。然後設置一個斷點並期望該對象和它的類型。 – Joe 2012-04-09 17:06:33

1

另一個想法:不是parseAccountNumbers(...)創建一個公共屬性(如果可能)內Documents類,如:

public string AccountNumbers 
{ 
    return Accounts.Aggregate("", (current, account) => current + (account.AccountNumber + "<br/>"));  
} 

,並使用它像一個數據字段:

<asp:Boundfield DataField="AccountNumbers" HeaderText="Account#" /> 
相關問題