我有一个列表对象
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' 有人可以指点我正确的方向吗?提前致谢。
答案 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#" />