.NET:为什么ListView中的组不起作用?有没有限制?

时间:2016-03-03 17:08:16

标签: .net winforms listview grouping

以下是代码:

    private void displayOrders(ListView pView)
    {
        pView.BeginUpdate();
        try
        {
            pView.Items.Clear();
            pView.Groups.Clear();

            List<string> uniqueValues = new List<string>();
            foreach (XxxOrder order in AppDocument.Instance.OrdersList)
            {
                ListViewItem li = new ListViewItem(new string[] { order.RecvTime, order.OrderNo, order.ErrorCode.ToString() });
                string value = order.OrderNo;
                int idx = uniqueValues.IndexOf(value);
                if (idx < 0) uniqueValues.Add(value);
                pView.Items.Add(li);
            }
            if (uniqueValues.Count < (int)(pView.Items.Count * 0.90f))
            {
                pView.ShowGroups = true;
                pView.Groups.Clear();
                ListViewGroup[] groupsArray = new ListViewGroup[uniqueValues.Count];
                int i=0;
                foreach (string it in uniqueValues)
                {
                    groupsArray[i++] = new ListViewGroup(it, it);
                }
                pView.Groups.AddRange(groupsArray);
            }
        }
        finally { pView.EndUpdate(); }
    }

执行此代码后,我可以看到所有项目属于一个名为&#34;默认&#34;。

的组。

为什么? 项目和组的数量是否有任何限制?在这种情况下,我有列表项7841,我有6629个唯一的订单#值,所以6629组。

或者列顺序可能有限制?那么,组密钥只能是第一列?...

或者是否应首先添加组并仅添加列表项?

你能告诉我吗?

注意:它是.NET 3.5。应用程序使用System.Windows.Forms。 OS = Windows 10 Pro x64。

提前谢谢。

PS。我只是尝试先收集唯一值,然后添加组,然后添加列表项 - 这没有帮助。 : - \ 所以,我非常困惑 - 如果.NET Windows.Forms中的ListView控件的功能完全正常工作?!

1 个答案:

答案 0 :(得分:2)

您需要正确分配ListViewItem.Group Property

在你的情况下,像这样:

// ...
pView.Groups.AddRange(groupsArray);
foreach (ListViewItem item in pView.Items)
    item.Group = pView.Groups[item.SubItems[1].Text];
// ...