如何在WebForms中将List<string>绑定到ListView?

7

我有一个 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>

在我的 CodeBehind 中:

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 在用户代码中未经处理
Message="DataBinding: 'System.String' 不包含名为 'theList' 的属性。"

我认为我在这里做错了什么,有人可以给我建议吗?

3个回答

15
使用代码:'<%# Container.DataItem %>
<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Container.DataItem %>'/>

1

1

<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) %>

我还没有测试过,但它应该能解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接