是否有可能在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