参观文章: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();
}