how to sort string as number in datagridview in winforms

前端 未结 4 1155
我在风中等你
我在风中等你 2020-12-01 14:33

I have string column with numbers in a datagridview.It is not bound, I would like to sort it number wise I used

colid.ValueType = typeof(int);
grid.Sort(co         


        
相关标签:
4条回答
  • 2020-12-01 14:58

    Create a class like:

    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
        }
    }
    

    and do

    grid.Sort( new Sort() );
    
    0 讨论(0)
  • 2020-12-01 15:00

    Your problem is that you sort string values. When you load column you must choose type of values in column like that:

    dt.Columns.Add("ColumnName", typeof(int));

    0 讨论(0)
  • 2020-12-01 15:08

    You can just convert to Int32 when you assign value to column

    DataGridView.Cells["example"].Value= Convert.ToInt32(text);
    

    And it will sort correctly

    0 讨论(0)
  • 2020-12-01 15:16

    You can register on the SortCompare event, for example:

    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;
    ...
    

    I didn't check if that works, but you get the idea... ;)

    0 讨论(0)
提交回复
热议问题