如何将 List 绑定到 WebForms 中的 ListView 中
本文关键字:WebForms 中的 ListView 绑定 List string | 更新日期: 2023-09-27 18:31:16
我有一个List<string>
集合,我想将其绑定到我的ListView
中。
以下是我ListView
的标记:
<asp:ListView ID="lvList" runat="server">
<LayoutTemplate>
<div id="Div1" runat="server">
<div ID="itemPlaceholder" runat="server">
</div>
</div>
</LayoutTemplate>
<EmptyDataTemplate>
<div id="Div2" runat="server">
<div ID="itemPlaceholder" runat="server">
No data was returned.
</div>
</div>
</EmptyDataTemplate>
<ItemTemplate>
<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Eval ("theList") %>'/>
</ItemTemplate>
</asp:ListView>
在我的代码隐藏中:
protected void Page_Load(object sender, EventArgs e)
{
List<string> theList = new List<string>();
//populate members of list
lvList.DataSource = theList;
lvList.DataBind();
}
错误信息:
System.Web.HttpException 未由用户代码
处理 消息="数据绑定:"System.String"不包含具有以下属性的属性 '名单'这个名字。
我想我在这里做错了事情,有人可以建议我吗?
使用 '<%# Container.DataItem %>
:
<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Container.DataItem %>'/>
<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Eval ("theList") %>
此行导致问题,因为您引用了列表当前元素中的属性"theList",但该列表除了内部的字符串外没有任何属性。
要走的方法是例如在后面的代码中实现该方法,例如
protected void Test(object obj)
{
return obj.ToString();
}
在 ASPX 中:
<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Test(Container.DataItem) %>
我还没有测试过它,但它应该可以解决问题。
EVAL 用于单个键值,数据绑定控件从头到尾循环访问集合,并逐个放置在放置 eval 语句的位置。
此链接中的答案可以提供更好的想法。如何使用DataBinder.Eval从集合中检索当前对象?
希望这会有所帮助