Как привязать List <> к столбцу в ListView - PullRequest
2 голосов
/ 28 августа 2010

У меня есть 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 <>, чтобы привыбрана строка, я смогу получить данные из списков и провести с ней некоторые вычисления.Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 28 августа 2010

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 голос
/ 28 августа 2010

Свойство ListViewItem.Tag позволяет связывать все, что вы хотите с элементом. Вы можете хранить там все DataRow и получать любые столбцы, которые хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...