我有一個datagridview.It與數字字符串列不綁定,我想對它進行排序號明智的我用如何在的WinForms DataGridView的排序字符串數
colid.ValueType = typeof(int);
grid.Sort(colid, ListSortDirection.Descending);
但種種像串例如:
11
12
23
7
80
81
而預期是
7
11
12
23
80
81
我有一個datagridview.It與數字字符串列不綁定,我想對它進行排序號明智的我用如何在的WinForms DataGridView的排序字符串數
colid.ValueType = typeof(int);
grid.Sort(colid, ListSortDirection.Descending);
但種種像串例如:
11
12
23
7
80
81
而預期是
7
11
12
23
80
81
您可以在SortCompare
註冊事件,例如:
private void customSortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
int a = int.Parse(e.CellValue1.ToString()), b = int.Parse(e.CellValue2.ToString());
// If the cell value is already an integer, just cast it instead of parsing
e.SortResult = a.CompareTo(b);
e.Handled = true;
}
...
yourGridview.SortCompare += customSortCompare;
...
我沒有檢查其是否正常工作,但你的想法...;)
創建一個類,如:
class Sort : IComparer
{
public int Compare(object x, object y)
{
return -int.Parse((string)x).CompareTo(int.Parse((string)y)); //sort descending
//return int.Parse((string)x).CompareTo(int.Parse((string)y)); //sort ascending
}
}
,做
grid.Sort(new Sort());
當您向該列添加值時,您可以將其轉換爲Int 32
DataGridView.Cells["example"].Value= Convert.toInt32(text);
它將排序正確
不能得到爲什麼這沒有upvoted。作品,謝謝。 – C4u 2016-09-19 14:16:18
此解決方案效果更好!更簡單,快捷。一個小小的修正,只是讓「t」Capital: 「Convert.ToInt32(text)」 – 2017-09-29 10:30:31
@Mikael的IComparer應System.Collections.IComparer,進一步我們得到的X和Y gridviewrows因此它不能被解析成int或字符串,所以它不工作。 – Thunder 2010-04-21 05:41:07
@Thunder,IComparer是Sysem.Collections.IComparer。我沒有包含使用語句,並且你對輸入是正確的。但它可以很容易地改變,以處理gridviewrows並拉出價值。 我應該試過這個解決方案,而不是徒手畫。 – 2010-04-21 05:49:54