循环遍历转发器控件中的嵌套集合

本文关键字:嵌套 集合 控件 遍历 转发器 循环 | 更新日期: 2023-09-27 18:30:43

我有一个列表对象

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

我得到的错误是"无法从'对象'转换为'系统.集合.列表'有人可以指出我正确的方向吗?提前谢谢。

循环遍历转发器控件中的嵌套集合

更改

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

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

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

另一个想法:而不是parseAccountNumbers(...)在类中创建一个公共属性(如果可能的话Documents如下所示:

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

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

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