DataGridView的自定义列排序
1,将需要进行排序的列做属性的设置
this.colUserName.SortMode = DataGridViewColumnSortMode.Programmatic;
2,添加列的事件
//点击列头进行排序
private void dgv_NoSignalSelect_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
int nColumnIndex = e.ColumnIndex;
if (dgv_NoSignalSelect.Columns[nColumnIndex].SortMode != DataGridViewColumnSortMode.Programmatic)
{
return;
}
switch (dgv_NoSignalSelect.Columns[nColumnIndex].HeaderCell.SortGlyphDirection)
{
case SortOrder.None:
case SortOrder.Ascending:
//在这里加入排序的逻辑
OrderTableOgDgv(nColumnIndex, "asc");
//设置列标题的状体
dgv_NoSignalSelect.Columns[nColumnIndex].HeaderCell.SortGlyphDirection = SortOrder.Descending;
break;
default:
//在这里加入排序的逻辑
OrderTableOgDgv(nColumnIndex, "desc");
//设置列标题的状体
dgv_NoSignalSelect.Columns[nColumnIndex].HeaderCell.SortGlyphDirection = SortOrder.Ascending;
break;
}
}
3,下面是上面应用到的排序算法
/// <summary>
/// 给dgv_NoSignalSelect按列排序
/// </summary>
/// <param name="nColumnIndex"></param>
/// <param name="orderCmd"></param>
private void OrderTableOgDgv(int nColumnIndex, string orderCmd)
{
DataTableEx dtex = this.dgv_NoSignalSelect.SourceDataTable;
dtex = UserQueueServer.OrderTable(dtex, dgv_NoSignalSelect.Columns[nColumnIndex].Name, orderCmd);
this.dgv_NoSignalSelect.SourceDataTable = dtex;
this.dgv_NoSignalSelect.Refresh();
}
public Class UserQueueServer{
/// <summary>
/// 对DataTable排序
/// </summary>
/// <param name="dt">DataTableEx</param>
/// <param name="columnname">排序的列名称</param>
/// <param tyoe="type">排序类型 "desc"-降序 "asc"-升序</param>
/// <returns></returns>
public static DataTableEx OrderTable(DataTableEx dt, string columnname,string type)
{
DataTable ds = dt.Clone();
ds.Clear();
if (dt.Columns.Contains(columnname))
{
DataRow[] drs = dt.Select("1=1", columnname + " "+ type);
foreach (DataRow dr in drs)
{
ds.Rows.Add(dr.ItemArray);
}
}
return ds as DataTableEx;
}
}
DataGridView的自定义列排序的更多相关文章
- EasyUI扩展——自定义列排序匹配字段
一些特殊情况下希望实现:单击某些列,但是排序要按照自定义指定另外的列排序 easyui扩展: 如果不写sort属性则按照默认该列的field排序 $.fn.datagrid.defaults.onBe ...
- DataGridView 列排序 内存表查找
DataRow[] drow = dt.Select("列名 = 列名的值" ); 就这句话,dt是一个datatable 且断点调试时能看到里面有trade这个列,可为什么执行到 ...
- datagridview 日期列排序
1.datagridview 日期列排序 private void Form1_Load(object sender, EventArgs e) { //方法1 dataGridView1.Colum ...
- (转)datagridview 自定义列三步走
本文转载自:http://blog.csdn.net/zx13525079024/article/details/4814642 我们如果想自定义实现datagridview的某列,例如是datagr ...
- 自定义多列排序:C++/Java实现
前言: 有些时候,我们在编程中会遇到多列排序的需求.假如在execle,这事儿就太easy了.不过没办法,现在就需要你用Java或者C++实现这样一个功能! 比如将下表无序的数据通过重排之后按照以下规 ...
- Jtable 表格按多列排序(支持中文汉字排序)
这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求.由于我是大神,所以必须做了出来.ok,不自恋 ...
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- ORACLE自定义顺序排序-转
ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...
- Dos.ORM Select查询 自定义列
自定义列 .Select( p = >new{ test = p.id}) // 同sql 列名 as 新列名 如下是 自己在写代码的例子,查询,分页,where条件,排序 var where ...
随机推荐
- Android -- FragmentTabHost实现微信底部切换
1,在商城类的项目中我们开始一个项目的时候经常出现这样的需求,如下图所示: 下面使用户可以切换的模块,上面是对应的模块的详细内容,实现这个效果有很多方式,可以使用radiobutton+fragmen ...
- 夺命雷公狗---node.js---9实现页面的跳转
废话不多说,我们先来看看项目的文件结构,如下所示: 然后我们创建一个index.js的文件让他来做端口监听,代码如下所示: var http = require('http'); var fs = r ...
- 好用的调色软件 ColorSchemer Studio
软件名叫:ColorSchemer Studio 这是windows平台下的软件
- zw版【转发·台湾nvp系列Delphi例程】HALCON SetMshape
zw版[转发·台湾nvp系列Delphi例程]HALCON SetMshape procedure TForm1.FormShow(Sender: TObject);var img : HImageX ...
- SSAS维度上有多个表的注意事项
在Sql Server Analysis Service中维度上有多张表(大于一张表)时,一定要注意将第二张表开始用到维度属性中的KeyColumns下的NullProcessing要设置为Unkno ...
- jsp struts标签迭代各种数据
首先创建一个User对象 User user=new User(); user.setUserName("张三"); user.setAge(30); User user1=new ...
- java基础整理1
1.匿名对象:new persion().tell();这样的,它只开辟栈内存,没有栈引用的关系 2.构造方法的名称必须与类名称一致,构造方法的声明处不能有任何返回值类型的声明,不能在构造方法中使用r ...
- mysql开启远程访问
1.MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web-Server 与 MySql-Server 都在同一台服务器上的网站架 ...
- Gson将参数放入实体类中进行包装之后再传递
package com.sinoservices.dms.orderinfo.entity; public class OrderDetailKeyCondition { //工单主键 private ...
- __ATTRIBUTE__ 你知多少?【转】
转自:http://www.cnblogs.com/astwish/p/3460618.html GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属 ...