【问题标题】:Converting List<object> to ListView items (with subItems)将 List<object> 转换为 ListView 项(带有子项)
【发布时间】:2023-03-25 03:15:01
【问题描述】:

我有一个预先配置的 ListView(已经设置了列标题),我想分配一个对象列表,并写入 - 作为该 listview 的行 - 我有一个列表的类的特定属性。

我正在尝试关注this existing question,虽然它可以完美处理只有一列的项目,但我不确定如何应用多个子项目。

我有一个包含 List&lt;Product&gt; 的类,它被传递给一个 UserControl,它获取该列表并将每个产品项添加到控件内的 ListView 中。

虽然链接的问答处理了这个问题,但它并不完整,我不知道如何将其他属性作为子项放入 ListView。

我的 sn-p:Products.Items.AddRange(basket.ProductList.Select(p =&gt; new ListViewItem(p.Description)).ToArray()); 其中pList&lt;Product&gt;

我还想在列表视图中显示商品数量、单价和总行数(已经在课堂上计算出来),但我不知道从哪里开始。

【问题讨论】:

  • 这是 WPF 还是表单?
  • 对不起,我应该指定 - 它是 WinForms
  • 另外,你应该详细说明一下,到底是什么问题?为视图创建新列?从 listviewitem 中查找产品?等等......或者你期待一个主细节视图?
  • 列表视图不太适合这个。您必须为每个项目添加子项目。另一方面,如果它是一个 datagridview,myDGV.DataSource = basket; 就是你所需要的
  • 我已更新 - 但简而言之,我有一个“产品”类列表,我想将其转换为带有子项的 ListViewItems,其中子项是类的属性,例如。数量、单价、行合计等。

标签: c# winforms listview


【解决方案1】:

ListViewItem 类有很多构造函数。最适合您的情况是ListViewItem Constructor (String[])

public ListViewItem(string[] items)

使用表示子项的字符串数组初始化 ListViewItem 类的新实例。

用你的 sn-p,像这样

Products.Items.AddRange(basket.ProductList.Select(p => new ListViewItem(new string[]
{ 
    p.Description,
    p.Quantity.ToString(...),
    p.UnitPrice.ToString(...),
     ...  
})).ToArray());

请注意,ListViewItem.Text 实际上是 ListView.SubItems[0].Text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多