日期:2014-05-18  浏览次数:20971 次

datagridview多列排序
msdn里有这么一段代码用来多列排序:
private   void   Button1_Click(   object   sender,   EventArgs   e   )
{
        if   (   RadioButton1.Checked   ==   true   )
        {
                DataGridView1.Sort(   new   RowComparer(   SortOrder.Ascending   )   );
        }
        else   if   (   RadioButton2.Checked   ==   true   )
        {
                DataGridView1.Sort(   new   RowComparer(   SortOrder.Descending   )   );
        }
}

private   class   RowComparer   :   System.Collections.IComparer
{
        private   static   int   sortOrderModifier   =   1;

        public   RowComparer(SortOrder   sortOrder)
        {
                if   (sortOrder   ==   SortOrder.Descending)
                {
                        sortOrderModifier   =   -1;
                }
                else   if   (sortOrder   ==   SortOrder.Ascending)
                {
                        sortOrderModifier   =   1;
                }
        }

        public   int   Compare(object   x,   object   y)
        {
                DataGridViewRow   DataGridViewRow1   =   (DataGridViewRow)x;
                DataGridViewRow   DataGridViewRow2   =   (DataGridViewRow)y;

                //   Try   to   sort   based   on   the   Last   Name   column.
                int   CompareResult   =   System.String.Compare(
                        DataGridViewRow1.Cells[1].Value.ToString(),
                        DataGridViewRow2.Cells[1].Value.ToString());

                //   If   the   Last   Names   are   equal,   sort   based   on   the   First   Name.
                if   (   CompareResult   ==   0   )
                {
                        CompareResult   =   System.String.Compare(
                                DataGridViewRow1.Cells[0].Value.ToString(),