2012-04-09 1 views
1

У меня есть список объектовLoop через вложенной коллекции в элементе управления повторителя

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; 
    } 

Я получаю ошибку «не удается преобразовать из из„Object“в„System.Collections.List“ Может кто-то пожалуйста, мне точку в правильном направлении? Заранее спасибо.

ответ

5

Изменить

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

Для

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

DataBinder.Eval возвращает Object и ваш метод ожидает List<Account>.

+0

Имеет ли какое-то значение для привязать коллекцию классов к столбцу ** Vs ** привязать его к свойству класса и присвоить список как источник данных для ретранслятора? – Pankaj

+0

В учетных записях codebehind продолжает возвращаться как null. Любая причина для этого? – rross

+1

Это не объект «Список объектов учетной записи». Вы можете изменить свою подпись метода на parseAccountNumbers (учетные записи объектов). Затем установите точку останова и ожидайте объект и его тип. – Joe

1

Еще одна идея: вместо parseAccountNumbers(...) Создать общественную собственность (если это возможно) внутри Documents класса, как:

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

и использовать его в качестве поля данных, как:

<asp:Boundfield DataField="AccountNumbers" HeaderText="Account#" /> 
Смежные вопросы