如何绑定List<>到ListView中的列

时间:2010-08-28 10:47:11

标签: c# winforms list listview

我有一个包含此字段的DataTable

datatable.Columns.Add("ProductID", typeof(int));
datatable.Columns.Add("LocationList", typeof(List<string>));
datatable.Columns.Add("LocationIds", typeof(List<int>));
datatable.Columns.Add("ProductName", typeof(string));
datatable.Columns.Add("Brand", typeof(string));
datatable.Columns.Add("Price", typeof(decimal));
datatable.Columns.Add("Quantity", typeof(int));
datatable.Columns.Add("Locations", typeof(string));

我将它绑定到ListView

foreach (DataRow row in productsDataTable.Rows)
{
    var item = new ListViewItem(row[0].ToString());
    for (var i = 1; i < productsDataTable.Columns.Count; i++)
        item.SubItems.Add(row[i].ToString());

    lvSearchResults.Items.Add(item);
}

我想绑定List&lt;&gt;字段,这样当选择一行时,我将能够从列表中获取数据并使用它进行一些计算。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

ListViewItem具有Tag属性,您可以将数据存储在以后检索和使用,例如:

foreach (DataRow row in productsDataTable.Rows)
{
    var item = new ListViewItem(row[0].ToString());

    // Store the specific values you want to later retrieve
    item.Tag = new object[] { row["LocationList"], row["LocationIds"] };

    // Or, store the whole row
    item.Tag = row;

    lvSearchResults.Items.Add(item);
}

答案 1 :(得分:1)

ListViewItem.Tag属性允许您将所需内容与项目相关联。您可以将整个DataRow存储在那里并检索所需的任何列。