更改绑定数据源的DataGridView的数据排序



参观文章:http://www.cnblogs.com/gossip/archive/2008/10/27/1320622.html

1、方法一:利用DataTable

        private void dgv_SearchResult_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            changeDgvDataSourceSequence(dgv_SearchResult, dt_Search,e);
        }

       //传入的DataTable类型的参数dt_dgv为传入的DataGridView 类型的参数所绑定的数据源

        private void changeDgvDataSourceSequence(DataGridView dgv,DataTable dt_dgv,DataGridViewCellMouseEventArgs e)
        {
            try
            {
                if(e.Button == System.Windows.Forms.MouseButtons.Left)
                {
                    string columnName = dgv.Columns[e.ColumnIndex].Name;
                    SortOrder so = dgv.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection;

                    if (so == SortOrder.Ascending)
                    {
                        columnName = columnName + " asc";
                    }
                    else if (so == SortOrder.Descending)
                    {
                        columnName = columnName + " desc";
                    }

                    DataTable dt_new1 = dt_dgv.Copy();
                    DataRow[] drs = dt_new1.Select(string.Empty, columnName);
                    dt_dgv.Clear();
                    foreach (DataRow dr in drs)
                    {
                        dt_dgv.ImportRow(dr);
                    }

                    dgv.DataSource = dt_dgv;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


2、方法二:利用DataGridView自带的Sorted方法(未验证)

        private void changeDgvDataSourceSequence()
        {
            string sort = dgv_SearchResult.SortedColumn.Name;
            SortOrder so = dgv_SearchResult.SortOrder;
            if (so == SortOrder.Ascending)
            {
                sort += " asc";
            }
            else if(so == SortOrder.Descending)
            {
                sort += " desc";
            }
            DataView dv = dt_Search.DefaultView;
            dv.Sort = sort;
            dt_Search = dv.ToTable();
        }

猜你喜欢

转载自blog.csdn.net/u011585024/article/details/53612218