更改绑定数据源的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();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值