2014-02-27 48 views
0

我想排序列表視圖。ListView獲取列類型

問題是,我希望它是通用的,所以我想檢查是什麼類型的列進行排序。

由於某種原因,我找不到解決方案。

財產以後這樣的:

if(listviewX.SubItems[ColumnToSort].GetType() == typeof(DateTime)) 
    compareResult = ObjectCompare.Compare(DateTime.Parse(listviewX.SubItems[ColumnToSort].Text), DateTime.Parse(listviewY.SubItems[ColumnToSort].Text)); 
else 
    compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text); 
+0

您還可以使用[ObjectListView](http://objectlistview.sourceforge.net/cs/index.html),它具有更多的功能,並且比內置的ListView更好。 – Coder

回答

0

如果您知道類型,可以卻使ListView,那麼你可以存儲他們類型他們列索引來檢查你的ListView列目前的數據在一些Dictionary這樣稍後將它們分類:

IDictionary<int, Type> dictColTypes = new Dictionary<int, Type>(); 
dictColTypes.Add(0, typeof(int)); // Column 1 type 
dictColTypes.Add(1, typeof(string)); // Column 2 type 
... 

可以使用ListViewItemSorter屬性爲這裏例如定義的分類: ListView.ListViewItemSorter

在上面的例子中,創建一個類ListViewItemComparer並調用它像這樣:

this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column); 

其中e.Column是列數。