WinForm下一个筛选的demo(希望大家指正)
2012-12-06 01:28
155 查看
休息在家,难得有敲代码的雅兴,随手敲个demo,给大家看看。
里面部分实现对于新手估计有所帮助,对于高手呢,就请大家给我指错吧。本人照单全收。
demo主要实现了两个功能。
高级查找(FrmSift)
列表筛选(UCFilter)
关于sift和filter两个词这里就不做争论了。
先看我画的demo界面:
高级查找针对于查找选项过多的情况下使用,做为一个通用的查找功能出现在软件项目中。
高级查找使用时基本只需传入当前的DataGridView实例,生成需要的Where条件。
在demo中,高级查找实现了基本的通用功能,可以在多个数据列表中使用。
高级查找根据所给的DataGridView生成列选项(左边的选择项),对于某些不想显示的列可以隐藏(代码中我隐藏了第一列GUID),对于特殊的情况,可以传入一个SiftItem数组。
数据类型现在只做了三种判断,而且判断方式让人吐血:
对于数字类型和日期类型,给予两个条件共同完成——
高级查找现在只做了AND条件,没有强大的组合方式。
值得一提的是在处理日期类型时不能得到多数据库的支持,这里由于只是模拟数据,使用DataTable的Select去模拟查找功能,日期类型没问题。但是如果是MSSQL可能会出错,如果更甚者在数据库中使用varchar保存日期类型,这里处理就更加麻烦。(比如本人在项目中就对Oracle的此类现象进行了处理)
这里对于时间段做了一些功夫,其实都是有一次项目中需要,这里也就没删,保留了下来,希望对大家有用。
列表选择实现的最大一个功能就是可以筛选。
对于筛选后的列表,不会改变已经选择的状态。
其实很简单,不止保存数据源,还保存了对于每个数据的选择状态。
在列表查找中,对于上方全选的处理实在让我费了不少功夫。
主要是很多方面都要我去判断全选状态。
ListCheckBox的ItemCheck事件和全选的CheckStateChanged事件几乎让我弄的惨不忍睹,加了减了,减了加了,如下类似的代码我调用了不知道多少次。
好吧,写出来就是让大家指正的。
最后,源码:下载
欢迎来我的博客:nanqi.info
里面部分实现对于新手估计有所帮助,对于高手呢,就请大家给我指错吧。本人照单全收。
demo主要实现了两个功能。
高级查找(FrmSift)
列表筛选(UCFilter)
关于sift和filter两个词这里就不做争论了。
先看我画的demo界面:
高级查找
高级查找针对于查找选项过多的情况下使用,做为一个通用的查找功能出现在软件项目中。
高级查找使用时基本只需传入当前的DataGridView实例,生成需要的Where条件。
在demo中,高级查找实现了基本的通用功能,可以在多个数据列表中使用。
高级查找根据所给的DataGridView生成列选项(左边的选择项),对于某些不想显示的列可以隐藏(代码中我隐藏了第一列GUID),对于特殊的情况,可以传入一个SiftItem数组。
数据类型现在只做了三种判断,而且判断方式让人吐血:
switch (type.ToString()) { case "System.Int16": case "System.Int32": case "System.Int64": case "System.Single": case "System.Double": case "System.Decimal": siftType = SiftTypeEnum.Money; break; case "System.DateTime": siftType = SiftTypeEnum.Date; break; default: siftType = SiftTypeEnum.Text; break; }
对于数字类型和日期类型,给予两个条件共同完成——
从XXX至XXX,所以在处理上也费了点功夫。比如说删除其中一个,另一个也要删除等情况。
高级查找现在只做了AND条件,没有强大的组合方式。
值得一提的是在处理日期类型时不能得到多数据库的支持,这里由于只是模拟数据,使用DataTable的Select去模拟查找功能,日期类型没问题。但是如果是MSSQL可能会出错,如果更甚者在数据库中使用varchar保存日期类型,这里处理就更加麻烦。(比如本人在项目中就对Oracle的此类现象进行了处理)
这里对于时间段做了一些功夫,其实都是有一次项目中需要,这里也就没删,保留了下来,希望对大家有用。
列表选择
列表选择实现的最大一个功能就是可以筛选。
对于筛选后的列表,不会改变已经选择的状态。
其实很简单,不止保存数据源,还保存了对于每个数据的选择状态。
在列表查找中,对于上方全选的处理实在让我费了不少功夫。
主要是很多方面都要我去判断全选状态。
ListCheckBox的ItemCheck事件和全选的CheckStateChanged事件几乎让我弄的惨不忍睹,加了减了,减了加了,如下类似的代码我调用了不知道多少次。
this.chbxAll.CheckStateChanged -= this.chbxAll_CheckStateChanged; //do something this.chbxAll.CheckStateChanged += this.chbxAll_CheckStateChanged;
好吧,写出来就是让大家指正的。
最后,源码:下载
欢迎来我的博客:nanqi.info
相关文章推荐
- 一个简单的脚本验证插件,希望能对大家有所帮助,有demo
- 自己翻译的python3.0手册 第一章 希望大家指正
- .NET 新手小组 / 最近整理了一份C# WinForm开发系列,希望对大家有所帮助
- 自己上架的app,希望大家下一个,给个好评分和评论
- SESSION的持久处理,希望大家多指正
- 今天做应用 用到了不少关于时间处理方面的东西,总结一下,希望大家指正!
- 关于Android焦点的个人理解,希望大家来指正。
- 登录次数验证,可能还是有些不足的,希望大家指正
- 小弟的第一个DEMO,希望大家看后指教
- 发布一个Silverlight开源控件--希望大家指正
- 我的一些对于struts的感觉,希望大家指正
- 发布一个Silverlight开源控件--希望大家指正
- winform 内存优化!关闭窗口时,资源释放的问题,孤独的希望大家指导[没分了,又急,就发这儿来了,]
- 希望大家多多评价,多多批评指正,互相交流
- 一直分不清选择排序和冒泡排序,网上也好多都是模棱两可的,按自己的理解,总结了个小demo以作记录,希望批评指正
- 最新开发了一个在线记事本应用希望对大家有帮助
- 希望大家看贴的同时能多提宝贵意见,共同进步,谢谢!!
- 今天看到的两个算法题 ,第一次做这种题目,希望大家提供更好的思路!!
- 经典正则表达式(希望给自己和大家带来便利)
- [Aaronyang] 写给自己的WPF4.5 笔记24 [与winform交互-flash-DEMO-收尾篇1/6]