2016-09-10 2 views
0

Я пытаюсь создать ListView в Windows Form, который содержит группы и элементы, которые я получаю из DataBase.Добавление групп и элементов в ListView в виде окон C#

Мой ListView называется «lstItems»

В начале, то ListView пуст, и я заполню его с данными во время Runnig программы.

Это код, который я использую для создания групп:

foreach(DataRow r in tasksTbl.Rows) 
{ 
    string groupName = "group" + num; 
    num++; 
    lstItems.Groups.Add(groupName, r.Field<string>(0)); 
} 

В таблице tasksTbl не пусто, и это создает несколько групп, которые я не могу видеть на экране в данный момент.

Это код, который я использую для создания элементов и подпунктов для групп:

private void CreateItem(DataTable tbl) 
{ 
    int taskId = tbl.Rows[0].Field<int>(0); 
    string taskName = tbl.Rows[0].Field<string>(1); 
    DateTime startDate = tbl.Rows[0].Field<DateTime>(2); 
    DateTime endDate = tbl.Rows[0].Field<DateTime>(3); 

    string dateStr = startDate.ToString() + " - " + endDate.ToString(); 

    ListViewItem item = new ListViewItem(dateStr); 
    item.Tag = taskId.ToString(); 

    foreach (DataRow r in tbl.Rows) 
    { 
     string position = r.Field<string>(5); 
     string soldier = r.Field<string>(6); 
     item.SubItems.Add(soldier + " (" + position + ")"); 
    } 

    foreach(ListViewGroup grp in lstItems.Groups) 
     if (grp.Header.Equals(taskName)) 
      grp.Items.Add(item); 
} 

Здесь также таблица TBL не пуста, и это создает элементы и вложенные элементы в каждую группу.

В отладчике я вижу, что у групп есть элементы должным образом.

Моя проблема в том, что я не вижу группы или элементы на экране.

Что мне не хватает?

Может кто-нибудь дать мне руку?

Спасибо заранее!

+0

На экране есть? В окне просмотра отладчика? – Rahul

+0

На экране я вообще не видел этот предмет. Когда я использую точки останова в коде в debbuger, я мог видеть элементы в свойствах групп. –

+1

Вы должны назначить группу группе свойств LustViewItem, а не наоборот. Проверьте https://msdn.microsoft.com/en-us/library/ezh1batz(v=vs.110).aspx –

ответ

0

Я выяснил, что проблема.

Мне нужно было добавить столбцы в ListView, а затем добавить элементы в ListView и только в конце добавить элементы в группы.

Я сделал это, и теперь он работает.

0

itzick,

Вам необходимо создать группы, как вы идете, и назначить их на элементы, которые вы добавляете в Control ListView. Вот простой пример, который загружает ListView с номерами от 65 до 76. Группы основаны на числовом модуле 5.

Создайте форму, добавьте ListView, называемый listView1, добавьте метод ниже и вызовите этот метод во время форма груз. Вы должны увидеть ListView с пятью группами и несколькими элементами-членами в каждой группе.

private void LoadListView() 
    { 
     // Assume we are in a form, with a ListView control called listView1 on the form 

     // Create a group label array 
     var groupLabels = new string[5]; 
     groupLabels[0] = "aaa"; 
     groupLabels[1] = "bbb"; 
     groupLabels[2] = "ccc"; 
     groupLabels[3] = "ddd"; 
     groupLabels[4] = "eee"; 

     for (var i = 65; i < 76; i++) 
     { 
      // Find group or create a new group 
      ListViewGroup lvg = null; 
      var found = false; 
      foreach (var grp in listView1.Groups.Cast<ListViewGroup>().Where(grp => grp.ToString() == groupLabels[i % 5])) 
      { 
       found = true; 
       lvg = grp; 
       break; 
      } 

      if (!found) 
      { 
       // Group not found, create 
       lvg = new ListViewGroup(groupLabels[i % 5]); 
       listView1.Groups.Add(lvg); 
      } 

      // Add ListViewItem 
      listView1.Items.Add(new ListViewItem {Text = i.ToString(CultureInfo.InvariantCulture), Group = lvg}); 
     } 
Смежные вопросы