【问题标题】:Populate a ListView with Strings用字符串填充 ListView
【发布时间】:2013-07-16 11:18:09
【问题描述】:

我对 ASP.NET 有点陌生,所以请耐心等待。我遇到了this solution,它允许我将字符串数组作为一行数据添加到 ListView。但是,我不确定设置它的正确方法。我只是在我的网站上尝试使用 ListView 这个解决方案时,我被告知new ListViewItem() 需要一个 ListViewItemType 类型的参数。示例解决方案没有提供,那么它在 ASP.NET 中是否有所不同?

所以我要问的主要问题是:如果我有一个字符串数组,如何将它作为 ASP.NET 中的一行数据添加到 ListView?

编辑:我想确保我要求正确的控制。我的印象是 ListView 是 like this (但在 ASP.NET 中),但到目前为止我得到的不是。只是一行文字。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    如果你想像示例中那样显示,你想使用GridView而不是ListView

    字符串集合不足以显示在多列中。你需要一个对象的集合。

    截屏(上为ListView,下为GridView)

    示例代码

    <asp:ListView runat="server" ID="ListView1">
        <ItemTemplate>
            <%# Eval("Name") %>, 
            <%# Eval("Email") %>, 
            <%# Eval("Phone") %><br />
        </ItemTemplate>
    </asp:ListView>
    <br/>
    <asp:GridView ID="GridView1" AutoGenerateColumns="True" runat="server" />
    
    public class User
    {
        public string Name { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        var collections = new List<User>
            {
                new User {Name = "Jon Doe", Email = "john@doe.com", Phone = "123-123-1234"},
                new User {Name = "Marry Doe", Email = "marry@doe.com", Phone = "456-456-4567"},
                new User {Name = "Eric Newton", Email = "eric@newton.com", Phone = "789-789-7890"},
            };
    
        ListView1.DataSource = collections;
        ListView1.DataBind();
    
        GridView1.DataSource = collections;
        GridView1.DataBind();
    }
    

    【讨论】:

    • 谢谢!是否可以使这个可选?
    • 是的,您可以在GridView 中选择/编辑/删除一行。这里有更多关于GridView - msdn.microsoft.com/en-us/library/…的信息
    • 似乎 GridView 并不是我真正想要的,因为选择方法不同,而且似乎我必须手动分配值(通常不可见的 ID 字段)。您认为 DataList 是否更符合我的要求? (编辑:将 DataGrid 更改为 DataList)
    • 在我上面的例子中,我只想快速显示结果;这就是为什么我使用 AutoGenerateColumns="True" 来显示每一列的原因。在实际应用中,您希望手动填充数据,例如使用BoundFieldGridView是个大控件,所以需要一点时间来理解。
    • 好的,我去看看BoundField。我现在唯一的问题是隐藏 ID 字段(目前它是可见的,我宁愿它不可见)并使 GridView 可滚动,这可能是另一回事。感谢您的帮助!
    【解决方案2】:

    您可以使用ToList operator 将数组转换为列表

    c#

    lv.DataSource = yourArray.ToList();
    lv.DataBind();
    

    asp.net

    <asp:ListView ID="lv" runat="server">
    
            <ItemTemplate>
                <asp:Label ID="lbl" runat="server" Text='<%# Container.DataItem %>'/>
            </ItemTemplate>
    
    </asp:ListView>
    

    【讨论】:

    • 我还没有尝试过(即将尝试),但是这段代码似乎将列表视图的整个数据源分配给了那个字符串数组。字符串数组旨在表示一个ROW 数据,而不是应该在列表视图中的整个列表。我在这个假设中是不正确的吗?
    • 没有每个字符串都在列​​表视图的行中,因为我使用的是 Container.DataItem,
    • 好的,所以我正在尝试创建一个包含多个这些的 ListView...如何将您给我的内容添加到几个列表中?这只会列出一个结果。
    • 我建议您添加三个项目模板,并将每个 ne 与您的用户列表的属性绑定 List
    • 我不确定你的意思。为什么是三个?
    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 2023-04-10
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多