点击DataGridView列标题排序后,绑定的DataTable也相应的排序, DataGridView和DataTable数据具有一致性 (新增加了sorted事件的排序方式)...

ContractedBlock.gif ExpandedBlockStart.gif Code
 1         private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
 2         {
 3             if (e.Button == MouseButtons.Left)
 4             {
 5                 String columnName = this.dataGridView1.Columns[e.ColumnIndex].Name;
 6                 SortOrder so = this.dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection;
 7 
 8                 if (so == SortOrder.Ascending)
 9                 {
10                     columnName = columnName + " asc";
11 
12 
13                 }
14                 else if (so == SortOrder.Descending)
15                 {
16                     columnName = columnName + " desc";
17 
18                 }
19 
20                 DataTable dt1 = dt.Copy();
21 
22                 DataRow[] drs = dt1.Select(String.Empty, columnName);
23 
24                 dt.Clear();
25                 foreach (DataRow dr in drs)
26                 {
27                     dt.ImportRow(dr);
28                 }
29 
30                 this.dataGridView1.DataSource = dt;
31             }
32         }
33 

 

 

2.sorted事件排序方法,以前也研究过sorted事件,可是一直都找不到答案,觉得没什么用,特别是事件参数为EventArgs,一点信息都提不出来。 最近看到同事的代码,觉得不错。不过改代码有个问题,就是如果在sorted中重新绑定DataGridView, 则多次单击列标题时标题会没反应,代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
      private void dataGridView1_Sorted(object sender, EventArgs e)
        {
            
string _sortStr = this.dataGridView1.SortedColumn.Name; //排序列
            
//排序方向
            SortOrder _so = this.dataGridView1.SortOrder;
            
if (_so == SortOrder.Ascending)
            {
                _sortStr 
+= " asc";
            }
            
else
            {
                _sortStr 
+= " desc";

            }

            DataView _dv 
= this.dtTemp.DefaultView;
            _dv.Sort 
= _sortStr;   //排序
            this.dtTemp = _dv.ToTable();  //将排序后的datatable赋给 this.dtTemp 
        }

 

转载于:https://www.cnblogs.com/gossip/archive/2008/10/27/1320622.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值