XAF列表视图(ListView)中的过滤(Filter),可以在ListView模型的Filters节点中添加,添加的过滤项(FilterItem)会在列表视图的工具栏中以下拉列表的形式显示,WinForm与Blazor是一致的。当过滤项的个数比较少时,这是一个不错的选择。如果过滤项比较多,并且想通过树形结构进行组织时,就需要我们自定义实现了,常见的形式就是在列表的左侧放置一个过滤面板,后面有它的实现原理,EasyXaf.BlazorTabbedMdi模块( http://www.cnblogs.com/haoxj/p/16916525.html )对它做了实现。
PC端过滤列表是放置在列表视图左侧
移动端过滤列表是采用弹窗显示
启用过滤面板后将会隐藏工具栏中的过滤下拉列表
过滤项的分组可通过两种方式实现
第一种方式在添加或查看时更直观,但如果想用XAF自带的过滤,它会显示所有的部分,第二种是为了兼顾上面提到的问题,优先级比第一种方式高。
这个与XAF自带的过滤行为是保持一致的
工具栏包含了折叠、展开及清除过滤,下面是演示
实现过滤面板有两种方式
创建自定义GridListEditor,这种方式是一种比较标准的方式,同时也是适用性最强的,在有ListView的地方都可以使用,但实现起来也是最复杂的。
使用自定义WindowTemplate模板,将过滤面板放置在相应位置,当View为ListView时,将其显示出来。这种方式适应性不强,只能使用自定义模板的地方才能显示,但实现起来比较简单。
我们这里采用的是第二种方式,以后我们也会采用第一种方式来实现。有了上面的思路后,实现方法也比较简单,下面我把实现步骤及注意事项说一下。
从模型中读取过滤列表,这是应用程序模型的知识,可以参考之前的文章
由于从模型读取的过滤列表是扁平的,需要根据规则将其转换为树形结构,我们需要创建一个FilterItem类,它同时也是用于Tree控件进行数据绑定的类,代码如下:
创建一个Blazor组件将过滤列表树显示出来,这里用到了DxTreeView组件,工具栏使用的是DxToolbar组件,同时在Blazor组件添加一个ListView参数属性,我们可以通过ListView读取过滤列表,应用选择的过滤项等操作。
创建一个针对ListView的ViewController,用于显示及隐藏过滤面板及启用过滤面板后隐藏XAF自带的过滤列表等操作。
想在移动端弹窗显示过滤列表,这是上篇文章提到的内容(http://www.cnblogs.com/haoxj/p/16921586.html)
以上就是过滤面板实现的大体流程,感兴趣的可以自己实现一下。
tp6应用的特点:其实吧,多应用代表每一个应用都可以有一个入口文件。 控制台的入口文件是位于根目录下的think. 问题? tp6.0访问的路径默认是index/index怎么修改呢?下面是这个的问题:现在在(没有就新建),作用:没有这个应用的话,就指向这里啦<?php //+---------------------------------------------------------------------- //|ThinkPHP[WECANDOITJUSTTHINK] //+---------------------------------------------------------------------- //|Copyright(c)2006~2018http://thinkphp.cnAllrightsreserved. //+---------------------------------------------------------------------- //|Licensed(http://www.apache.org/licenses/LIC
今天分享的文章是复制提到香农定理,通信领域的小伙伴应该是非常熟悉的了,可称得上是该领域的「金科玉律」。1948年,香农博士在《通信的数学原理》一书中提出了这一著名的定理。此后,香农定理成为现代信息论的基础理论,在通信和数据存储领域得到了广泛应用,并为今天通信的发展打下了坚实的理论基础。 信息论之父克劳德·香农。 70多年过去了,通信行业的发展依然离不开基础数学理论的支撑。各大科技公司也纷纷采取自己的方式积极推动数学的发展和吸引数学人才,比如阿里巴巴举办的年度全球数学竞赛等。 华为也不例外。在全球化战略发展中,华为也充分彰显出了其对数学的重视。华为先后在俄罗斯和法国设立了数学研究所,旨在加强基础研究,特别是数学算法方面的研究。这些举措为华为的技术发展提供持续不断的理论源泉。 同样,在国内,华为与众多的数学领军专家开展了深度合作。华为与张平文院士、徐宗本院士、李安民院士都建立了数学联合实验室,并且与高校和科研机构有大量合作课题。 据华为心声社区报道,不久前,在湖南长沙由中国工业与应用数学学会举办的「数学促进企业创新发展论坛」上,华为董事、战略研究院院长徐文伟做了主题为「后香农时代,数学决
有段时间没有使用python了,对它的语法有点生疏,花了几个小时熟悉,期间发现很多小细节不清楚。为了下次能快速上手,避免重复犯错,我将python使用过程中的一些问题在这篇博文中记录小结一下,主要内容涉及到python操作mysql数据库,python发送http请求,解析txt文本,解析JSON字符串,crontab执行python脚本,等等。(注:我用的是python2.7版本) 为方便操作,建议在系统环境变量path里面添加python的安装路径,比如我的是D:\Python27。一、添加第三方模块module,并导入模块 在windowns里面,可以先下载模块对应的包文件,放到python默认的模块文件夹下(./python2.7/Lib/site-packages/)。然后在cmd中进入模块的解压文件,执行pythonsetup.pyinstall。(注意:如果事先没有添加python安装路径到环境变量里,是不能执行这个命令的) 在ubuntu里,以root用户权限执行easy_installmodule_name,便可
查看Pod事件:$kubectldescribepod/apigateway-6dc48bf8b6-clcwk-ncn-staging复制NeedtokillPodNormalKilling39s(x735over15h)kubelet,10.179.80.31Killingcontainerwithiddocker://apigateway:NeedtokillPod复制可能是磁盘满了,无法创建和删除pod处理建议是参考Kubernetes最佳实践:处理容器数据磁盘被写满DeadlineExceededWarningFailedSync3m(x408over1h)kubelet,10.179.80.31errordeterminingstatus:rpcerror:code=DeadlineExceededdesc=contextdeadlineexceeded复制怀疑是17版本dockerd的BUG。可通过kubectl-ncn-stagingdeletepodapigateway-6dc48bf8b6-clcwk--force--grace-period=0强制删除pod,但do
<!-- #@Time:2018/11/2上午12:31 #@Author:BrownWang #@Email:277215243@qq.com #@File:vue8.html.html #@Software:PyCharm--> <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>counter</title> </head> <body> <divid="app"> <p>总数:{{total}}</p> <component @increase="handleGetTotal" @reduce="handleGetTotal"></component> </div> <scriptsrc="/static/
安全工程师篇 程序开发语言 大数据技能图谱 机器学习技能图谱 架构师技能图谱 前端工程师篇 嵌入式开发必备技能 移动性能优化 云计算工程师篇 运维工程师篇 DBA技能图谱 H5技能图谱 Hadoop家族技能图谱 iOS开发工程师 OpenResty复制安全工程师篇(完稿)-01.jpgiOS开发工程师1.0-01.jpg运维工程师篇(完稿)-01.jpg云计算工程师篇(完稿)-01.jpg前端工程师篇(完稿)-01.jpg程序开发语言(完稿)-01.jpgOpenResty-01.jpgHadoop家族技能图谱(完稿)-01.jpg嵌入式开发必备技能(完稿)-01.jpgH5技能图谱1.0-01.jpgDBA技能图谱1.0-01.jpg移动性能优化1.0-01.jpg大数据技能图谱.jpg机器学习技能图谱.jpg架构师技能图谱.jpg个人介绍: 高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。
紫色薰衣草 在iOS开发过程中,不可避免的要和证书打交道,真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题,但是如果掌握了真机调试的原理和本质;遇到问题,我们就更容易定位问题之所在,从而迅速的解决问题。知识点补充:摘要算法: 摘要算法是指,可以将任意长度的文本,通过一个算法,得到一个固定长度的文本。这里文本不一定只是文本,可以是字节数据。所以摘要算法试图将世间万物,变成一个固定长度的东西 1.只要源文本不同,计算得到的结果,必然不同 2.无法从结果反推出源(那是当然的,不然就能量不守恒了)MD5和SHA。摘要算法主要用于比对信息源是否一致,因为只要源发生变化,得到的摘要必然不同;而且通常结果要比源短很多,所以称为“摘要”。 数字证书(digitalcertificate)证书生成 开发者在申请iOS开发证书时,需要通过keychain生成证书签名请求(CSR)文件(*.certSigningRequest),生成CSR会创建公钥、私钥以及*.certSigningRequest文件。公钥包含在CSR中,私钥用于为请求签名。提交
研究数据的方法有很多,比如利用统计方法,计算数据的平均值和标准差;再比如使用模型,拟合数据。数据通常是大量的,人脑难以直接把握其中的信息。研究数据的最终目的是减小海量数据的信息量,将数据中的信息客观的展示出来,并最终整理成简单的,人脑可以掌握的知识。数据可视化图形是直观呈现数据的直接方法。然而,将大量数据在同一个图表中画出来并不容易。早期的测绘、天气数据都需要长时间的手工绘制。随着计算机绘图功能的开发,手工绘画已经完全被自动绘图程序取代。问题的核心转移为,要以怎样的方式呈现数据,以便数据中的信息能自然的体现出来。数据可视化(datavisualisation)就是研究如何利用图形,展现数据中隐含的信息,发掘数据中所包含的规律。它是一门横跨计算机、统计、心理学的综合学科,并随着数据挖掘和大数据的兴起而进一步繁荣。下面一个视频来自HansRosling。他是瑞典的一位医学家,同时也是统计学家。在下面的这个BBC制作的视频中,HansRosling用丰富的可视化手段,展示了近两百年来世界各国人口和收入的演化。我给这段视频增加了中英文字幕,以方便观看。如果有错误,请见谅。http://v.yo
大家好,又见面了,我是你们的朋友全栈君。在实现企业服务器虚拟化的时候,许多系统已经是NT或Windows2000的老系统,要安装上虚拟机还得重装系统,但是已经找不到光盘或是驱动程序了,因此重装系统是无法成功的,要将旧服务器虚拟化,最好的办法就是实体机转换(P2V)。一、什么是P2V?P2V是Physicaltovirtual的简称,即物理到虚拟。它是指将物理机上的系统、应用软件以及数据转换到虚拟机中。它的工作原理是将物理机中的磁盘转换为虚拟机镜像,然后在虚拟机服务器配置虚拟设备如(网卡,USB等),启动虚拟机,就可以跟原来物理机一样运行了。目前P2V分为三种:手工迁移,全过程由操作人员手工完成,这样的缺点是对操作人员要求比较高。半自动迁移,在关机情况下,通过工具实现自动化迁移。热迁移,在物理机运行情况下完成迁移。二、Virt-P2V的介绍与使用目前最安全的方式还是关机情况下的P2V,virt-v2v和virt-p2v是Redhat开发的开源P2V工具,并且在Redhat6.3中提供。1.Virt-P2V的安装:运行下面命令#yuminstallvirt-v2v复制也可以下载virt-v
在上篇文章中我们了解了PlateLocate的过程中的所有步骤。在本篇文章中我们对前3个步骤,分别是高斯模糊、灰度化和Sobel算子进行分析。 一、高斯模糊 1.目标 对图像去噪,为边缘检测算法做准备。 2.效果 在我们的车牌定位中的第一步就是高斯模糊处理。 图1高斯模糊效果 3.理论 详细说明可以看这篇:阮一峰讲高斯模糊。 高斯模糊是非常有名的一种图像处理技术。顾名思义,其一般应用是将图像变得模糊,但同时高斯模糊也应用在图像的预处理阶段。理解高斯模糊前,先看一下平均模糊算法。平均模糊的算法非常简单。见下图,每一个像素的值都取周围所有像素(共8个)的平均值。 图2平均模糊示意图 在上图中,左边红色点的像素值本来是2,经过模糊后,就成了1(取周围所有像素的均值)。在平均模糊中,周围像素的权值都是一样的,都是1。如果周围像素的权值不一样,并且与二维的高斯分布的值一样,那么就叫做高斯模糊。 在上面的模糊过程中,每个像素取的是周围一圈的平均值,也称为模糊半径为1。如果取周围三圈,则称之为半径为3。半径增大的话,会更加深模糊的效果。 4.实践
css几种常用的简单容易记住的水平垂直居中方法前言正文第一种方法第二种方法结束语 前言 我们在设计网页时,会大量的运用到水平垂直居中,如果知道元素的宽高,那水平垂直居中是很简单的,无非是用一下margin就可以完成,这里就不向大家做过多的解释了。但是,如果不知道元素的宽高呢?是不是就会在这上面用点心思了,接下来我给大家介绍两种我设计网页时常用的两种不定宽高的元素水平居中方法吧,放心绝对容易记。 正文 首先来创建一个html页面,html代码和css代码如下: <divclass="box"> <divclass="content">我是box中的内容</div> </div> <style> .box{ width:600px; height:300px; background:lightgreen; } .content{ background:red; } </style> 复制 效果图: 接下来我们就在这个基础上,对红色方框的元素标签进行水平垂直居中的操作 第一种方法 第一种方法我强烈
在开发过程中,经常碰到比如加载的是哪个配置文件、上传文件大小受限、PHP错误日志文件位置等问题需要快速查找出来并解决,因此总结记录出下面的相关配置。 phpinfo—输出关于PHP配置的信息 1、查看phpinfo配置信息 方式一 <?php /* boolphpinfo([int$what=INFO_ALL]) 查看phpinfo函数官方原型,发现它的返回值是bool型,而我一直都是这样用的:echophpinfo();现在得知,并不需要echo啦 */ phpinfo(); ?> 复制 方式二 在命令行运行(注意php路径): //后面加个管道符">",将phpinfo信息输出到phpinfo.txt文件保存 D:\wamp\bin\php\php5.5.12\php.exe-i>phpinfo.txt 复制 方式一查看信息如下 2、需熟知的配置 在安装扩展的时候,需要知道自己PHP的运行环境,根据环境来安装适合自己的扩展版本,所以还是很有必要知道一下这些配置的 Compiler:PHP运行用到的编译器,MSVC11(VisualC++20
基本概念和术语 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。(整型,实型等数值类型和字符及声音、图像、视频等非数值类型) 数据对象:是性质相同的数据元素的集合,是数据的子集 数据元素:是组成数据的、有一定意义的基本单位,再计算机中通常作为整体处理。也被称为记录。 数据项:一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。 层次关系 逻辑结构 逻辑结构:是指数据对象中数据元素之间的相互关系 1.集合结构 集合结构中的数据元素除了同属一个集合外,他们之间没有其它关系。 2.线性结构 线性结构中的数据元素之间是一对一的关系。 3.树形结构 树形结构中的数据元素之间存在一种一对多的层次关系。 4.图形结构 图形结构的数据元素是多对多的关系。 用示意图表示数据的逻辑结构时,要注意:
TCP在网络通讯的时候,通常在解决TCP粘包、拆包问题的时候,一般会用以下几种方式: 1、消息定长例如每个报文的大小固定为200个字节,如果不够,空位补空格; 2、在消息尾部添加特殊字符进行分割,如添加回车; 3、将消息分为消息体和消息头,在消息头里面包含表示消息长度的字段,然后进行业务逻辑的处理。 在Netty中我们主要利用对象的序列化进行对象的传输,虽然Java本身的序列化也能完成,但是Java序列化有很多问题,如后字节码流太大,以及序列化程度太低等。Jboss的序列化有程度较高、序列化后码流较小。这里利用Jboss的Marshalling测试一个简单的对象序列化。 新建Maven工程,引入Netty5和Jboss的Marshalling。 注:这里的Marshalling的版本,如果版本太低,可能会出现消息发送失败的问题。我在测试的时候起先用的是1.3.9,结果就是消息发送失败,打印异常信息发现是空指针的问题。 <dependency> <groupId>io.netty</groupId> <artifac
目录一、Docker概述1.1Docke是什么(简介)二、Docker与虚拟机的区别2.1容器在内核中支持2种重要技术Docker隔离原理三、Docker核心概念镜像容器仓库四、Docker安装YUM安装源码编译安装镜像加速下载五、Docker命令使用查看镜像操作搜索镜像--dockersearch下载镜像--dockerpull查看镜像信息--dockerimages为本地的镜像添加新的标签--dockertag删除镜像--dockerrmi存储镜像:将镜像保存成为本地文件--dockersave-o载入镜像:将镜像文件导入到镜像库中--dockerload上传镜像容器查询所有容器运行状态——dockerps-a创建容器——dockercreate启动容器——dockerstart停止容器运行--dockerstop删除容器——dockerrm-f创建并启动容器——dockerrun进入容器--dockerexec查看容器进程日志--dockerlogs从宿主机上将文件导入到容器中--dockercp容器导出/导入——dockerexport补充路由转发ipv4六、Docker网络1
<div><ulclass="navnav-tabs"><liclass="active"><ahref="#Index"aria-controls="Index"role="tab"data-toggle="tab">首页</a></li><li><ahref="#Index1"aria-controls="Index1"role="tab"data-toggle="tab">首页1</a></li><li><ahref="#Index2"aria-controls="Index2"role="tab"data-toggle="tab">首页2</a></li></ul></div><divclass="tab-content"><divclass="tab-paneactivepanel-group"id="Index"role="tablist"aria-multisele
概念:所谓的UINavigationItem就可以理解为NavigationBar中的内容,通过编辑UINavigationItem,我们可以使得在NavigationBar中显示想要的东西,比如设置标题、添加按钮 navigationItem和UINaviagationController平级, 1.navigationBar自己有很多属性:比如barStyle、背景backgroundColor、frame属性(可以获得宽高这些信息) 2.可以通过setBackgroundImage方法设置背景图片,并使用clipsToBounds裁剪 navigationBar的隐藏 这个需要其爸self.navigationController来控制。直接设置navigationBarHidden设置true或false navigationItem的设置 1.设置title。self.navigationItem.title= 2.设置titleView 3.设置左右边的按钮 self.navigationIte
必装插件 Chinese(Simplified)LanguagePackforVisualStudioCode 简介:LanguagepackextensionforChinese(Simplified) Bookmarks 简介:Marklinesandjumptothem BetterComments 简介:Improveyourcodecommentingbyannotatingwithalert,informational,TODOs,andmore! C/C++ 简介:C/C++ CMake 简介:CMake语法补全,语法高亮。 CMakeTools 简介:CMake工程构建工具。 Python 简介:Pythone BashIDE 简介:shell跳转 shellman 简介:shell语法自动补全 shell-format 简介:shell脚本格式化 shellcheck 简介:shell语法检查 CodeRunner 简介:支持多种语言的代码的立即执行。支持的语言:C,C++,Java,JavaScript,PHP,Python,Perl,Perl6,Ruby,Go,L
适配器模式 1.定义 将一个类的接口改变成客户端所期待的另一种接口,从而使因为接口不匹配而不能在一起工作的两个类能够协同工作。 适配器模式通常有四种角色。 AbstractTarget:抽象目标角色。定义将其它类转换为什么接口。 publicinterfaceAbstractTarget{ voidrequest(); } 复制 Target:目标角色。抽象目标角色的具体实现。 publicclassTargetimplementsAbstractTarget{ @Override publicvoidrequest(){ System.out.println("thisistarget!"); } } 复制 Adaptee:源角色。即将被转换的角色。 publicinterfaceAbstractAdaptee{ voiddoSomething(); } publicclassAdapteeimplementsAbstractAdaptee{ @Override publicvoiddoSomething(){ System.out.println("Thisisada