用字符串填充ListView

3

我对ASP.NET还有点陌生,请多包涵。我发现this solution可以让我将一个字符串数组添加为数据行到ListView中。但是,我不确定如何正确设置它。当我在我的网站上尝试使用这个解决方案时,我被告知new ListViewItem()需要一个ListViewItemType类型的参数。样例解决方案没有提供,那么在ASP.NET中是否有所不同?

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

编辑:我想确保我正在询问正确的控件。我以为ListView是类似于like this(但在ASP.NET中),但目前得到的结果却不是。它只是一行文本。

2个回答

2

如果您想展示像样例中的那样,您需要使用GridView而不是ListView

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

屏幕截图(顶部为ListView,底部为GridView)

enter image description here

示例代码

<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();
}

谢谢!这个能否做成可选择的? - muttley91
是的,您可以在 GridView 中选择/编辑/删除一行。以下是有关 GridView 的更多信息 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx - Win
似乎 GridView 不是我想要的,因为选择方法不同,而且似乎我必须手动分配值(一个通常不应该可见的 ID 字段)。你觉得 DataList 或许更符合我的需求吗?(编辑:将 DataGrid 更改为 DataList) - muttley91
在我上面的例子中,我只想快速显示结果;这就是为什么我使用了 AutoGenerateColumns="True",它会显示每一列。在实际应用中,您需要手动填充数据,例如使用 BoundFieldGridView 是一个大控件,因此需要一点时间来理解它。 - Win
好的,我会研究一下BoundField。我现在唯一的问题是隐藏ID字段(目前它是可见的,我宁愿它不可见),以及使GridView可滚动,这可能是另一个问题。感谢您的帮助! - muttley91
在ASP.Net GridView中添加垂直滚动功能并不常见,尽管在Windows Form中很常见。相反,我们通常使用分页。如果您真的想要滚动,您需要使用CSS。http://www.aspdotnet-suresh.com/2012/10/css-to-show-div-only-with-vertical.html - Win

1
你可以使用 ToList 运算符将数组转换为列表。
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>

我还没有尝试过(即将尝试),但是这段代码似乎将列表视图的整个数据源分配给了一个字符串数组。字符串数组旨在表示一行数据,而不是应该在列表视图中显示的整个列表。我的假设是否不正确? - muttley91
没有每个字符串都在您的列表视图行中,因为我使用Container.DataItem。 - Aghilas Yakoub
好的,所以我正在尝试创建一个带有多个这些的ListView...我该如何将你给我的内容添加到几个列表中?这只列出了一个结果。 - muttley91
我建议您添加三个项目模板,并将每个模板与您的用户列表属性List<User>绑定。 - Aghilas Yakoub
我不确定你的意思。为什么是三? - muttley91

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