C# 对任何列排序ListView

C# 对任何列排序ListView,c#,winforms,sorting,listview,C#,Winforms,Sorting,Listview,TaW在一篇评论中回答了我的问题。文章中所示的示例非常完美,解决了我的问题。当然,我省略了第5步,因为在我开始提问时提交的代码中已经完成了这项工作。谢谢你,陶 我有一个3列的列表视图,想通过单击列标题对任何列进行排序,但不知道如何进行排序。所有3列都是字符串 萨伊举了个例子,但我不明白。当我将这段代码复制并粘贴到我的程序中时,我得到了一个语法错误[使用泛型类型'system.Collections.generic.IComparer'需要1个类型参数],我说我不知道我是否在正确的轨道上或者如何解

TaW在一篇评论中回答了我的问题。文章中所示的示例非常完美,解决了我的问题。当然,我省略了第5步,因为在我开始提问时提交的代码中已经完成了这项工作。谢谢你,陶

我有一个3列的列表视图,想通过单击列标题对任何列进行排序,但不知道如何进行排序。所有3列都是字符串

萨伊举了个例子,但我不明白。当我将这段代码复制并粘贴到我的程序中时,我得到了一个语法错误[使用泛型类型'system.Collections.generic.IComparer'需要1个类型参数],我说我不知道我是否在正确的轨道上或者如何解决

    private void getlvAMFiles()
    {
        //lvAM.Items.Clear();
        DataView view = new DataView(tblvAttributes);
        DataTable distinct = view.ToTable(true, "DWPhysicalTableName", "DWPhysicalSchemaName");
        if (cbRegion.SelectedIndex < 0) return;
        DataView view1 = new DataView(tblvAttributes);
        DataTable distinctValues = view1.ToTable(true, "dwPhysicalSchemaName","dwPhysicalTableName");
        foreach (DataRow row in distinctValues.Rows) 
        { ListViewItem item = new ListViewItem(row["dwPhysicalSchemaName"].ToString());
        item.SubItems.Add(row["dwPhysicalTableName"].ToString().Substring(row["dwPhysicalTableName"].ToString().LastIndexOf("F") + 1)); 
            item.SubItems.Add(row["dwPhysicalTableName"].ToString());
            lvAM.Items.Add(item); 
        }
    }
private void getlvAMFiles()
{
//lvAM.Items.Clear();
DataView视图=新的DataView(tblvAttributes);
DataTable distinct=view.ToTable(true,“DWPhysicalTableName”,“DWPhysicalSchemaName”);
如果(cbRegion.SelectedIndex<0)返回;
DataView view1=新的DataView(tblvAttributes);
DataTable distinctValues=view1.ToTable(true,“dwPhysicalSchemaName”,“dwPhysicalTableName”);
foreach(distinctValues.Rows中的数据行)
{ListViewItem item=新的ListViewItem(行[“dwPhysicalSchemaName”].ToString());
item.SubItems.Add(行[“dwPhysicalTableName”].ToString().Substring(行[“dwPhysicalTableName”].ToString().LastIndexOf(“F”)+1));
item.SubItems.Add(行[“dwPhysicalTableName”].ToString());
lvAM.Items.Add(项目);
}
}

在另一个博客上说,在我在MSDN链接中引用的示例中,它应该是IComparer而不是IComparer。因此,错误消失了,但我仍然不知道如何使用它。对于未绑定的ListView,这篇[MSDN文章](请参阅!)看起来比实际更难。但是对于数据绑定列表视图,您应该能够对数据视图进行排序,不是吗?您并没有提出这一点作为答案,但事实确实如此。清除了所有内容,效果很好。如果您通过对数据视图进行排序来解决问题,您可能希望将其作为自己的答案来编写。如果包含了单击和排序例程!我会检查一下,看它是否值得投票;-)我按照你提供的链接中的说明解决了这个问题。唯一的区别是第5步,我从datatable填充listview,如我提交的代码所示,并使用属性设置列/项定义。