3

データベースから取得したグループと項目を含む ListView を Windows フォームで作成しようとしています。

私のListViewは「lstItems」と呼ばれています

最初は、ListView は空で、プログラムの実行中にデータを入力します。

これは、グループを作成するために使用するコードです。

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 テーブルは空ではなく、各グループにアイテムとサブアイテムを作成します。

デバッガーで、グループにアイテムが適切に含まれていることがわかります。

私の問題は、画面にグループやアイテムが表示されないことです。

私は何が欠けていますか?

誰か手を貸してくれませんか?

前もって感謝します!

4

2 に答える 2