DataGridView 绑定List集合后实现自定义排序
2024-10-16 23:35:47
这里只贴主要代码,dataList是已添加数据的全局变量,绑定数据源 datagridview1.DataSource = dataList,以下是核心代码。
实现点击列表头实现自定义排序
private int _sorterOrder; //1表示升序,0表示降序
private int _previousIndex = -; //记录前一次点击的列索引
private datagridview1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
//判断列标头是否被连续点击,是则改变上次排序规则,否则按升序排序
if (this._previousIndex == e.ColumnIndex)
{
this._sorterOrder = -this._sorterOrder;
}
else
{
this._sorterOrder = ;
}
this._previousIndex = e.ColumnIndex;
ListComparison(datagridview1.Columns[e.ColumnIndex].DataPropertyName);
}
实现List集合根据传入的属性名进行排序
/// <summary>
/// List集合比较器
/// </summary>
/// <param name="propName">属性名</param>
private void ListComparison(string propName)
{
Type type = typeof(MyModel);
PropertyInfo property = type.GetProperty(propName);
List<MyModel> modelList = datagridview1.DataSource as List<MyModel>;
modelList.Sort((x, y) =>
{
string value1 = property.GetValue(x, null).ToString();
string value2 = property.GetValue(y, null).ToString();
double number1, number2;
//如果属性值为数字则转换为浮点数进行比较,否则按照字符串比较
if (double.TryParse(value1, out number1) && double.TryParse(value2, out number2))
{
return this._sorterOrder == ? number1.CompareTo(number2) : number2.CompareTo(number1);
} return this._sorterOrder == ? value1.CompareTo(value2) : value2.CompareTo(value1);
});
}
最新文章
- (转)NIO与AIO,同步/异步,阻塞/非阻塞
- Node.js process 模块常用属性和方法
- CSS选择器和jQuery选择器的区别与联系之一
- hiho#1033 : 交错和
- 【bzoj1029】道路抢修
- iOS的app 中的 埋点
- 组合控件 圆环 ring
- shell惊鸿
- 《微信小程序七日谈》- 第五天:你可能要在登录功能上花费大力气
- 5.Smart使用内置函数或者自定义函数
- CentOS上安装GitBlit服务
- Qt 5.9.4 如何静态编译和部署?
- Codeforces 1045E. Ancient civilizations 构造 计算几何 凸包
- python之路(十)-正则表达式
- 读取Excel的部分问题
- expdp和impdp导入和导出数据
- Python中StringIO和BytesIO
- Java编程的逻辑 (15) - 初识继承和多态
- 获取和设置消息队列的属性msgctl,删除消息队列
- 刷新物化视图sql
热门文章
- SQL Server求解最近多少销售记录的销售额占比总销售额的指定比例
- python基础(六)循环
- Java的SPI机制与简单的示例
- Ajax请求利用jsonp实现跨域
- web报表移动端如何进行移动设备绑定与撤销
- [转]Dropdownlist doesn&#39;t postback after Page_ClientValidate()
- [转]六款值得推荐的android(安卓)开源框架简介
- No resource found that matches the given name &#39;Theme.AppCompat.Light 的完美解决方案
- win10输入法切换快捷键怎么设置
- Eclipse代码追踪功能说明