我有一个列表对象
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#" />