通过转发器控件中的嵌套集合循环

时间:2012-04-09 16:43:24

标签: c# asp.net webforms

我有一个列表对象

List<Documents>

,在里面我有另一个帐户列表。

List<Accounts>

从我的代码隐藏中,我将List连接到转发器控件

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' 有人可以指点我正确的方向吗?提前致谢。

2 个答案:

答案 0 :(得分:5)

更改

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

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

DataBinder.Eval返回Object,您的方法需要List<Account>

答案 1 :(得分:1)

另一个想法:代替parseAccountNumbers(...)Documents类中创建公共属性(如果可能),如:

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

并将其用作数据字段,如:

<asp:Boundfield DataField="AccountNumbers" HeaderText="Account#" />