设为首页 收藏本站
查看: 725|回复: 0

[经验分享] Spread for Windows Forms快速入门(11)---数据筛选

[复制链接]

尚未签到

发表于 2018-6-15 13:42:23 | 显示全部楼层 |阅读模式
  Spread支持开发人员自定义筛选数据的用户体验。基于行数据筛选,你可以允许用户分列进行筛选,从而仅显示符合了下拉列表中条件的行的数据,或者根据筛选结果更改行的外观。你可以使用默认的筛选方式,或者你可以从实际出发,自定义筛选器的每一个方面。
  允许用户进行行筛选
  默认情况下,表单禁止用户对表单的行进行筛选。你可以开启这一特性, 允许用户在所有列或者指定的列中进行行筛选。根据你要隐藏被筛除的列,还是更改列的外观,分别使用HideRowFilter类或StyleRowFilter类。 使用列AllowAutoFilter 的属性对给定的列进行筛选。
  完成设置之后,用户可以选择下拉列表中的选项对列进行筛选。
  根据一列中的值进行行筛选(隐藏筛除的行)时,请确保列首可见。使用HideRowFilter类选择行筛选的种类, 使用AllowAutoFilter属性,在制定的列中进行筛选。 下面的示例假设单元格中有一些数据,可以是指定的数据,也可以是绑定的数据源。
  fpSpread1.ActiveSheet.ColumnHeaderVisible = true;
  FarPoint.Win.Spread.HideRowFilter hideRowFilter = new FarPoint.Win.Spread.HideRowFilter(fpSpread1.ActiveSheet);
  fpSpread1.ActiveSheet.Columns[1,3].AllowAutoFilter = true;
  使用行筛选
  一旦你在一列使用了行筛选,列首会显示一个指示器。 下表总结了行筛选指示器的不同外观:
  行筛选指示器
  描述
DSC0000.png

  未进行行筛选的表头单元格的外观;这种情况通常出现在无筛选时,或行筛选未生效时。
DSC0001.png

  可以进行行筛选,但是没有被筛除的行时的表头单元格的外观;这种情况通常发生在全部内容满足筛选条件的时候。
DSC0002.png

  可以进行行筛选,并且进行了一部分筛选的表头单元格的外观;这种情况通常发生在根据行内容 进行了一部分行筛选时。
  列首显示了一个似下拉箭头符号的行筛选指示器。点击这个指示器显示一个下拉菜单,包含了筛选器的各个选项。 从列表中选择一项,这样筛选就会生效,并且(在本列中)所有符合的行就会被筛选出来。 默认的下拉列表包括所有在本列中单元格中的不重复的文本。
DSC0003.png

  下面的图表列出下拉列表中的条目。
  筛选器列表项
  描述
  (全部)
  不论内容,包含或允许在此列的所有行
  [内容]
  仅包含或允许此列中有特定的单元格内容的行
  (空白)
  仅包含或允许此列中空白(空单元格)的行
  (非空)
  仅包含或允许此列中非空的行(非空的单元格),换言之,包含内容的任何单元格。
  在给定的表单中,多个列可能拥有筛选器。基于列中的单元格内容,不同的列可以有不同的筛选器。 筛选的结果类似于根据主键和从键进行数据排序。在最初的列中筛选器列表里面的这些选项就会筛选一些行, 剩下的过滤器列表中的选项是所有可能的行的一个子集。通过选择多个筛选器,结果就会仅仅是那些符合所有筛选标准的行。
  设置筛除行的外观
  你可以自定义筛除行的外观,以便于你查看哪些行被选中,哪些被排除。符合标准的行被称为“选中”,那些不符合筛选标准的行被称为“排除”。 筛选可以隐藏那些被排除的行,也可以改变选中行和排除行的外观 如果你想要改变外观,这样你就可以继续显示所有数据,与此同时,高亮标注那些符合某些标准的行。 然后,你必须定义选中行的样式与被排除行的样式。
  你可以通过创建包含所有样式设置的NamedStyle对象来定义样式。 然后当行筛选应用于一列时,你可以通过引用对本筛选生效的NamedStyle对象 来使指定的样式设置生效。
  在下列图表中,基于给定的代码,筛选项目中的Gibson选项会将有筛选项的行设置成一种外观样式,将其他的行设置成另外一种外观样式。
DSC0004.png

  这里显示了如何使用代码启动行筛选。
  // 定义应用于筛除行的样式.
  FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();
  FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();
  inStyle.BackColor = Color.LightCyan;
  inStyle.ForeColor = Color.DarkRed;
  outStyle.BackColor = Color.LemonChiffon;
  outStyle.ForeColor = Color.Green;
  // 为第一列创建新的筛选设置(使用默认设置).
  FarPoint.Win.Spread.FilterColumnDefinition fcdef = new FarPoint.Win.Spread.FilterColumnDefinition(0);
  // 创建一个StyleRowFilter对象(样式筛选器), 并添加到上述筛选设置中.
  FarPoint.Win.Spread.StyleRowFilter styleFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, inStyle, outStyle);
  styleFilter.AddColumn(fcdef);
  // 为表单设置已创建的行筛选器对象。
  fpSpread1.ActiveSheet.RowFilter = styleFilter;
  // 以文本对数据区域进行筛选。
  fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();
  fpSpread1.ActiveSheet.SetText(0, 0, "Fender");
  fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");
  fpSpread1.ActiveSheet.SetText(2, 0, "Fender");
  fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");
  fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");
  fpSpread1.ActiveSheet.SetText(5, 0, "Yamaha");
  fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");
  fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");
  fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");
  fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");
  fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");
  fpSpread1.ActiveSheet.SetColumnWidth(0, 90);
  fpSpread1.ActiveSheet.SetColumnWidth(1, 210);
  定义筛选项目列表的内容
  你可以 根据列中指定单元格的内容筛选表单中的所有行。 要进行这样的行筛选,仅需完成以下简单的步骤:
  定义筛选条件
  定义筛选的结果行为(改变行的外观或者隐藏行)
  定义任意自定义的筛选器
  应用此筛选器
  为每一列定义筛选标准,此步骤称为列筛选的定义。 这一用来根据列的内容来筛选的条件被分配给单个列。将这些单一的列的条件或筛选设置合并到一个集合中。
  如果你要定义即将被筛选的行的外观,你可以通过定义一个选中样式和一个排除样式,或者直接隐藏被排除的行。
  通过设置DefaultRowFilter类中的相关属性,你可以自定义在下拉列表中的下列选项的显示词语,
  All - AllString Property
  Blanks - BlanksString Property
  NonBlanks - NonBlanksString Property
  在一张表单中,对所有列或某些特定列进行行筛选(将筛选器设置集合应用于表单中的列)。
  这里显示了如何使用代码进行行筛选
  1. 进行列筛选的定义
  2. 把这些定义组合成一个集合
  3. 定义样式
  4. 完成行筛选
  // Declare the row filter and column definitions.
  FarPoint.Win.Spread.FilterColumnDefinitionCollection fcdc = new FarPoint.Win.Spread.FilterColumnDefinitionCollection();
  FarPoint.Win.Spread.FilterColumnDefinition fcd1 = new FarPoint.Win.Spread.FilterColumnDefinition(2);
  FarPoint.Win.Spread.FilterColumnDefinition fcd2 = new FarPoint.Win.Spread.FilterColumnDefinition(3);
  FarPoint.Win.Spread.FilterColumnDefinition fcd3 = new FarPoint.Win.Spread.FilterColumnDefinition(1);
  // Add column filter definitions to a collection.
  fcdc.Add(fcd1);
  fcdc.Add(fcd2);
  fcdc.Add(fcd3);
  FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();
  FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();
  inStyle.BackColor = Color.Yellow;
  outStyle.BackColor = Color.Aquamarine;
  // Apply styles and column filter definitions to the row filter.
  FarPoint.Win.Spread.StyleRowFilter rowFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet,inStyle,outStyle);
  // Apply the column definition to the filter.
  rowFilter.ColumnDefinitions = fcdc;
  // Apply the row filter to the sheet.
  fpSpread1.ActiveSheet.RowFilter = rowFilter;
  附:Spread for Windows Forms快速入门系列文章
  Spread for Windows Forms快速入门(1)---开始使用Spread
  Spread for Windows Forms快速入门(2)---设置Spread表单
  Spread for Windows Forms快速入门(3)---行列操作
  Spread for Windows Forms快速入门(4)---常用的单元格类型(上)
  Spread for Windows Forms快速入门(5)---常用的单元格类型(下)
  Spread for Windows Forms快速入门(6)---定义单元格的外观
  Spread for Windows Forms快速入门(7)---单元格的交互操作
  Spread for Windows Forms快速入门(8)---单元格中用户动作出发的事件
  Spread for Windows Forms快速入门(9)---使用公式
  Spread for Windows Forms快速入门(10)---绑定到数据库

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-524268-1-1.html 上篇帖子: Windows XP下禁止USB口 下篇帖子: 破解Windows管理员口令的几种办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表