是否有可能在ListView中創建一個整數(或DataTime等)列?這是非常重要的,因爲我想根據這一列正確地對列表進行排序。在ListView中創建一個int列(Winforms)
到子項添加到ListViewItem的,我發現的唯一方法是:
listviewitem.SubItems.Add("1");
我想避免解析這些字符串以獲取每樣中的int表示!
是否有可能在ListView中創建一個整數(或DataTime等)列?這是非常重要的,因爲我想根據這一列正確地對列表進行排序。在ListView中創建一個int列(Winforms)
到子項添加到ListViewItem的,我發現的唯一方法是:
listviewitem.SubItems.Add("1");
我想避免解析這些字符串以獲取每樣中的int表示!
您可以使用Tag屬性。這些小幫手功能,照顧它:
private void setListItem(int row, int column, int value) {
ListViewItem.ListViewSubItem item = listView1.Items[row].SubItems[column];
item.Tag = value;
item.Text = value.ToString();
}
private int getListItem(int row, int column) {
return (int)listView1.Items[row].SubItems[column].Tag;
}
而不是僅僅通過使用.Text
屬性將字符串添加到列表中並接收字符串。
例子:
int a = 0;
listView1.Items.Add(a.ToString());
或
int a = Convert.ToInt32(listView1.Items[0].SubItems[0].Text);
您只需將它們轉換爲String
類型做同樣的與DataTime
和其它數據類型。
如何解釋包含日期的列,這完全取決於您。 只需實現你的排序算法,特別是ListView
列。
我認爲我們有整型,像我們在DataGrid中列一列,其實我也有關於ListView控件的想法。讓我知道你是否找到答案。
請點擊此鏈接 https://support.microsoft.com/en-us/kb/319401
那麼對於功能比較
//add the following switch case as per your requirement of datatype in respect //to column datatype
public int Compare(object x, object y)
{
......
switch (ColumnToSort)
{
case 2:
compareResult = objectComparer.Compare(DateTime.Parse(listviewX.SubItems[ColumnToSort].Text), DateTime.Parse(listviewY.SubItems[ColumnToSort].Text));
break;
case 3:
compareResult = objectComparer.Compare(float.Parse(listviewX.SubItems[ColumnToSort].Text.Replace("kb", "").Replace("mb", "")), float.Parse(listviewY.SubItems[ColumnToSort].Text.Replace("kb", "").Replace("mb", "")));
break;
default:
compareResult = objectComparer.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
break;
}
......
}
好吧好吧,但這是真正的解析這些字符串.... – Grzenio 2008-11-18 17:59:08
據我瞭解一個特定的ListView列不支持不同的數據類型可以通過一些已經實現的功能進行排序。您只需通過爲特定列實現特定的軟算法來自己做... – Mariusz 2008-11-18 18:04:24