前言

XAF列表视图(ListView)中的过滤(Filter),可以在ListView模型的Filters节点中添加,添加的过滤项(FilterItem)会在列表视图的工具栏中以下拉列表的形式显示,WinForm与Blazor是一致的。当过滤项的个数比较少时,这是一个不错的选择。如果过滤项比较多,并且想通过树形结构进行组织时,就需要我们自定义实现了,常见的形式就是在列表的左侧放置一个过滤面板,后面有它的实现原理,EasyXaf.BlazorTabbedMdi模块( https://www.cnblogs.com/haoxj/p/16916525.html )对它做了实现。

演示

PC端演示

PC端过滤列表是放置在列表视图左侧

移动端演示

移动端过滤列表是采用弹窗显示

基本使用

启用过滤面板

  • EnableFilterPanel:是否启用过滤面板,默认为false
  • ShowFilterPanel:是否显示过滤面板,过滤面板是可以显示及隐藏的,启用过滤面板后才有效,默认为true
  • FilterPanelWidth:过滤面板宽度,默认为250

启用过滤面板后将会隐藏工具栏中的过滤下拉列表

添加过滤项

过滤项的分组可通过两种方式实现

  1. 过滤项Caption属性使用斜线(/)分隔,分段的最后一个是过滤项名,其它的为组名(第一个为根,其它类推)
  2. 过滤项GroupName属性填写组名,使用斜线(/)分隔(行为与第一种方式一致)

第一种方式在添加或查看时更直观,但如果想用XAF自带的过滤,它会显示所有的部分,第二种是为了兼顾上面提到的问题,优先级比第一种方式高。

启用后的界面

记录上次选择的过滤项

这个与XAF自带的过滤行为是保持一致的

过滤面板工具栏

工具栏包含了折叠、展开及清除过滤,下面是演示

显示及隐藏过滤面板

原理

实现过滤面板有两种方式

  1. 创建自定义GridListEditor,这种方式是一种比较标准的方式,同时也是适用性最强的,在有ListView的地方都可以使用,但实现起来也是最复杂的。

  2. 使用自定义WindowTemplate模板,将过滤面板放置在相应位置,当View为ListView时,将其显示出来。这种方式适应性不强,只能使用自定义模板的地方才能显示,但实现起来比较简单。

我们这里采用的是第二种方式,以后我们也会采用第一种方式来实现。有了上面的思路后,实现方法也比较简单,下面我把实现步骤及注意事项说一下。

  1. 从模型中读取过滤列表,这是应用程序模型的知识,可以参考之前的文章

  2. 由于从模型读取的过滤列表是扁平的,需要根据规则将其转换为树形结构,我们需要创建一个FilterItem类,它同时也是用于Tree控件进行数据绑定的类,代码如下:

  3. 创建一个Blazor组件将过滤列表树显示出来,这里用到了DxTreeView组件,工具栏使用的是DxToolbar组件,同时在Blazor组件添加一个ListView参数属性,我们可以通过ListView读取过滤列表,应用选择的过滤项等操作。

  4. 创建一个针对ListView的ViewController,用于显示及隐藏过滤面板及启用过滤面板后隐藏XAF自带的过滤列表等操作。

  5. 想在移动端弹窗显示过滤列表,这是上篇文章提到的内容(https://www.cnblogs.com/haoxj/p/16921586.html)

以上就是过滤面板实现的大体流程,感兴趣的可以自己实现一下。

XAF Blazor FilterPanel的更多相关文章

  1. XAF新手入门 - 模块(Module)

    模块概述 谈到模块大家应该都不会感到陌生,不管是前端还是后端都有模块的概念,XAF中的模块概念与大多数框架中的模块概念是相通的.XAF模块首先是一个.NET类库,同时它还包含一个继承自ModuleBa ...

  2. XAF新手入门 - 前言

    很多小伙伴在第一次接触XAF时,会被它的丰富功能及开箱即用的特点所吸引,即使在不了解XAF的情况下,也能够依葫芦画瓢创建一个功能丰富的应用,但当应用到实际项目中时,你会发现与之前的愿景差距很大,很多都 ...

  3. XAF新手入门 - 类型子系统(Types Info Subsystem)

    类型子系统概述 类型子系统是XAF的核心概念,但我们平时却很少关注它,它集中存储了模块中的类型,它是生成应用程序模型(Application Model)的基础,它与XAF中其它的概念都有所关联,了解 ...

  4. 如何汉化XAF应用

    这是一个入门级的问题,应网友请求,总结一下XAF汉化过程的几个关键点. 一.所有Dev的控件的汉化,Dev官方有汉化文件.点击下载15.2版本. 正版用户登陆至官网是有专门的下载界面的,并且可以参与汉 ...

  5. XAF视频教程来啦,已出7课

        XAF交流学习群内的兄弟录制了视频,他没有博客,委拖我发至博客园,希望能让更多的开发人员受益.快速开发企业级应用的好工具!   XAF入门01快速浏览   XAF入门02特点. XAF入门03 ...

  6. XAF 如何基于业务规则禁用属性

    // Developer Express Code Central Example: // How to: Disable Property Editors Based on a Business R ...

  7. XAF 如何将数据库中Byte array图片显示出来

    问题比较简单,直接上代码. private Image _Cover; [Size(SizeAttribute.Unlimited), ValueConverter(typeof(ImageValue ...

  8. XAF视频教程来啦,已出15课

    第一到第七课在这里: http://www.cnblogs.com/foreachlife/p/xafvideo_1_6.html 视频地址:http://i.youku.com/i/UMTI5OTE ...

  9. XAF:如何让用户在运行时个性化界面并将个性化信息保存到数据库中 win/web/entityframework/xpo

    本主题介绍如何启用管理模型差异(XAFML),并将设置存储在数据库中.   名词解释: 1.模型:XAF中把所有应用程序的结构都用模型来定义,比如列表,有哪些列,名称是什么,对应的字段名是什么,业务对 ...

  10. XAF点滴:很具体很用实用---处理三个小问题

    以下内容全部为web版本的老模板风格下完成. 一.在编辑状态的详细视图下打印报表. 有些时候,需要在编辑状态下直接打印报表内容,官方默认是不允许这样做的.用Reflector查看源码,可以看到: De ...

随机推荐

  1. 数据挖掘机器学习[二]---汽车交易价格预测详细版本{EDA-数据探索性分析}

    题目出自阿里天池赛题链接:零基础入门数据挖掘 - 二手车交易价格预测-天池大赛-阿里云天池 相关文章: 特征工程详解及实战项目[参考] 数据挖掘---汽车车交易价格预测[一](测评指标:EDA) 数据 ...

  2. Win32汇编:算数运算指令总结

    整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...

  3. Mybatis(一对一、一对多、多对多)操作

    * 首先列出示例中用到的数据库表 user表: accout表: role表: user_role表: 建表语句如下: DROP TABLE IF EXISTS `user`; CREATE TABL ...

  4. pthread库的使用

    目录 1.说明 2.使用 2.1.pthread_create 2.2.pthread_join 2.3.pthread_exit 2.4.pthread_self 2.5.pthraad_detac ...

  5. vue实现简易瀑布流

    实现效果 1.不同屏幕尺寸下根据可视区域宽度判断 应该 放几列,这里用onresize演示 2.鼠标滚动到已加载数据的底部时再次请求数据,重新计算哪一列高度最小,push到最小的那一列 实现思路 1. ...

  6. 营销(marketing)、推广(Promotion)和 运营(Operation)的概念分别是什么?

    首先要明确的原则: 1.你得承认"讨论任何事情之前不弄清楚概念定义就是耍流氓" 2.你得承认"由于每个人的经验学识和理解力的不同,我们常对概念定义产生分歧" 3 ...

  7. AI热点概念解读:一文搞懂这些热词

    自 ChatGPT 问世以来,AI的风口就来了. AI是一门研究如何使计算机具有类似人类智能的学科. 自从ChatGPT-3.5给大家带来了极大的震惊之后,全民都在谈论AI,在这个AI大时代背景之下, ...

  8. Socket.D 开源输传协议的集群转发特性

    1.简介 Socket.D 是基于"事件"和"语义消息""流"的网络应用层协议.底层可以依赖 TCP.UDP.KCP.WebSocket 等 ...

  9. postgresql备份和恢复操作

    1.介绍 最近项目上用了postgresql数据库,部署的时候需要备份数据库并在现场进行恢复操作,特此记录.我是在windows上安装的pgadmin4,此处用cmd下操作的: 备份命令:pg_dum ...

  10. js常用知识点整理

    说明:以下内容都是我工作中实际碰到的js知识点. 后面还会碰到其他知识点或对原来解决方案的改进,都会在本篇中持续不断的维护,希望给刚参加工作或初学的朋友一些参考. 1.给元素添加事件 $(" ...