XAF Excel数据导入模块使用说明与源码

 

我实现了XAF项目中Excel数据的导入,使用Devexpress 新出的spreadsheet控件,可能也不新了吧:D

好,先看一下效果图:下图是Web版本的。

下面是win版:

 

功能说明:

支持从Excel任意版本导入数据,可以使用 打开文件功能选择现有的文件,没有模板时,请来到上图界面中,另存为Excel到本地,往模板上填加数据。

导入时使用了显示名称进行匹配字段,所以字段部分不要修改。

导入时会使用你在写好的验证规则。

支持Win+Web两个版本。

使用方法:

 

第一步:将Admiral.ImportData模块拖到你的项目的模块中去,上图为例,我将把Admiral.ImportData拖到图中A项目中,即MFBI.Module中去。

第二步:将Admiral.ImportData.Web 拖到B中。

第三步:将Admiral.ImportData.Win拖到C中。

你不知道模块在哪里?请看下图:

先打开solution 中的Module.cs, 然后从toolbox拖动ImportDataModule到Required Modules中。

当然这是把源码直接放到项目中去的方法,如果想直接使用DLL,可以编译好后,在toolbox中填加选择项,选择路径后,再进行拖动。

 

再来看看代码中的设置:

以下代码中有两处标红的,第一必须实现IImportData接口才可能导入,这个接口是空的,不用实现。DomainComponent也可以这样使用。

对于普通的字段,没有其他设置。

对于引用型字段,需要[ImportDefaultFilterCriteria("编码=?")]这样,来设置将来查找引用类型的值时,用什么条件进行查找,当然问号会被替换为Excel中真实的值。

    [XafDisplayName("销量明细")][NavigationItem("销售模块")]public class 销量明细 : BaseObject,IImportData{public 销量明细(Session s) : base(s){}private 订单 _订单;[Association]

[ImportDefaultFilterCriteria("编码=?")]
public 订单 订单{get { return _订单; }set { SetPropertyValue("订单", ref _订单, value); }}......}

 

当前模块还比较简单 ,以后会慢慢完善。

 

 20160128已经更新了支持win下面除了ribbon以外其他的界面类型。

 

2016-3-17 将源码发布到github.

地址:https://github.com/tylike/Admiral.ImportData

修复了几个小BUG。

增加了更新导入功能,在业务对象上面写[UpdateImport("属性名称")],其中属性名称是指,在导入时,使用哪个属性的值 Excel->库中的 进行比较,来确定此对象是否存在。

增加了[ImportOptions(false)]属性,可以写在属性或字段上面,设置为false时,即在导入时不显示此字段。

增加给Winform增加了图标。

导入完成后,在Excel中给出了提示信息,成功或不成功。

在查找引用属性时,如果没有使用ImportDefaultFilterCriteria属性进行设置,则按如下优先级进行:

1.看主键是否是非自动生成的,是,则使用主键查找。

2.看引用类上面是否有[RuleUniqueValue]标记的属性,有则使用。

3.看DefaultProperty是否有设置,有则使用。

2016-7-5日更新说明:

增加了FindObjectProviderAttribute,用于提升性能.

需要加速的类上面写这个Attribute即可.

 2016-7-14日更新说明:

Excel导入模块增加了DC的支持,WEB下面可用。增加了Nullable类型的支持,并补全了数字类型的支持。

为了支持web下面新风格皮肤,增加了两个变量:

这两个变量可以在global.asax中进行设置:

1.ASPxSpreadsheetPropertyEditor.IsNewStyle = true; //如果使用了新风格时,需要设置此变量.

2.ASPxSpreadsheetPropertyEditor.SkinName="Aqua"; //由于Spreadsheet控件没有支持新风格,所以这里可以可以手工指定另一个风格,否则显示界面混乱

 

 

转载请注明出处。多谢!

 

转载于:https://www.cnblogs.com/foreachlife/p/xafimportexcel.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP注入漏洞基础教程(二)

进 阶 篇 在入门篇,我们学会了SQL注入的判断方法,但真正要拿到网站的保密内容,是远远不够的。接下来,我们就继续学习如何从数据库中获取想要获得的内容,首先,我们先看看&…

linux 内存清理/释放命令

1.清理前内存使用情况 free -m2.开始清理 echo 1 > /proc/sys/vm/drop_caches3.清理后内存使用情况 free -m4.完成!查看内存条数命令: dmidecode | grep -A16 "Memory Device$" # sync# echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys…

dotnet程序优化心得(三)

(4)继续优化――用空间换取时间 现在对每一个字符,都要用get_Item(object key)方法过一遍,可这个乖乖方法那么长,肯定太耗时间了,能不能用更简单的手段呢?改Hashtable?哇&#xff0c…

【Mininet】Mininet使用源码安装

实验参考: Mininet使用源码安装 实验步骤: 1. 更新软件(用#sudo apt-get update与#sudo apt-get upgrade)。 2. 从github上获取mininet源码(#git clone git://github.com/mininet/mininet)。 3. 获取完后&a…

【Mininet】Mininet可视化应用

实验参考: Mininet可视化应用 实验步骤: 1. 用命令启动mininet可视化界面(#cd mininet/mininet/example #./miniedit.py),同时开启另一终端打开Opendaylight。 2. 用鼠标选择左侧的对应的网络组件,然后在空…

【Mininet】Mininet命令延伸实验扩展

实验参考: Mininet命令延伸实验扩展 实验步骤: 1.用命令实现 #sudo mn --topo minimal #最小的网络拓扑,一个交换机下挂两个主机。 #sudo mn --topo linear,4 #每个交换机连接一个主机,交换机间相连接。本例:4个主机&a…

java非检查性异常有哪些_Java异常处理-检查性异常、非检查性异常、Error

一、Java异常处理详解异常.png目录:1.java中异常的分类1.1 异常(Exception)1.1.1 运行时异常(RuntimeException)可以不需要捕获1.1.2 编译异常(IOException)编译器会提示要捕获,如果不进行捕获则编译器会报错1.2 错误(Error)3.java处理异常机制4.throw和…

【Mininet】基于Mininet测量路径的损耗率

实验参考: 基于Mininet测量路径的损耗率 SDN常用控制器安装部署之POX篇 实验步骤: 1. 在装有mininet的虚拟机中新建文件mymininet.py并编辑以下内容,这里要注意一点,文中的dp0与dp1须填POX安装的虚拟机的地址,由于本次…

【Mininet】Mininet设置带宽之简单性能测试

实验参考: Mininet设置带宽之简单性能测试 实验步骤: 1. 进入mininet/custom目录下,通过vi mymininet1.py创建脚本并添加内容(本实验通过python脚本自定义拓扑,创建包含一个交换机、四个主机的网络拓扑)&am…

java 配置tocat_Tomcat安装配置及Eclipse配置详解

整个安装过程我们先学习安装jdk和配置然后是安装tomcat和配置,最后我们学习安装eclipse和配置以及web程序的使用和发布举例1. 安装jdk和配置(1)下载jdk安装包:(2)按照步骤点击下一步进行jdk软件的安装。(3)配置javajdk的环境变量**配置环境变量包括java_…

【Mininet】Mininet动态改变转发规则实验

实验参考: Mininet动态改变转发规则实验 SDN常用控制器安装部署之POX篇 实验步骤: 1. 在装有POX的虚拟机里,/root/pox目录下新建文件lab_controller.py,并编辑以下内容: 1 from pox.core import core2 3 import pox.o…

php搜索图片不显示不出来了,PHP CURL采集百度搜寻结果图片不显示问题的解决方法【第1/4页】...

1.根据关键字采集百度搜寻结果根据关键字采集百度搜寻结果&#xff0c;可以使用curl实现&#xff0c;代码如下&#xff1a;<?php function doCurl($url, $dataarray(), $headerarray(), $timeout30){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch…

数据库,XML,MDB --- 我们来TXT...

数据库,XML,MDB --- 我们来TXT... 转贴请注明来自http://blog.csdn.net/a11s 作者:董含君 blog已经迁移到http://a11s.cnblogs.com呵呵,有数据库当然用数据库,SQL Server多好用, mySQL多好用... 不能给客户端随便装服务啊,那就access或者其他单机的xsl之类,或者干脆XML XML是…

php文件怎么设置隐藏显示代码,php文件隐藏的方法

php文件隐藏的方法&#xff1a;1、在“httpd.conf”里任意位置添加代码为“AddType application/x-httpd-php .asp .py .pl .jsp aspx”&#xff1b;2、对PHP使用未知扩展名。隐藏你的.php文件今天做PHP在线手册镜像的时候看到了这个方法,哈哈,以前都没有注意到,所以说,手册是最…

【Mininet】Mininet脚本实现控制交换机行为

实验参考&#xff1a; Mininet脚本实现控制交换机行为 实验步骤&#xff1a; 1. 一台交换机两台主机&#xff0c;实现从1端口进入的数据流转发到2端口&#xff0c;从2端口进入的数据流转发到1端口。 1. 创建新文件mymininet1.py并编辑以下内容&#xff08;注意要将控制器设置为…

matlab2018b中svm无法运行,关于matlab2018a版本错误使用 svmclassify 分类器

当我们照常使用分类器函数svmclassify时&#xff0c;2018版的matlab会报出以下错误&#xff1a;解决办法&#xff1a;1&#xff0c;下载libsvm(一般下载最新版本就ok了)包&#xff0c;并将其添加至matlab的toolbox文件里。并打开matlab编辑器&#xff0c;主页 / 设置路径 / 添…

【Mininet】Mininet MAC地址学习实验

实验参考&#xff1a; Mininet MAC地址学习实验 实验步骤&#xff1a; 1. 在虚拟机上启动mininet&#xff0c;创建一个线型拓扑&#xff08;如下图所示&#xff09;&#xff0c;控制器设置为无&#xff08;# sudo mn –-topo linear –-mac –-switch ovsk –-controllernone&a…

【Mininet】基于Mininet的VxLAN实验

实验参考&#xff1a; 基于Mininet的VxLAN实验 实验步骤&#xff1a; 1. 如下图所示&#xff0c;在两台虚拟机中利用mininet创建两个网络&#xff0c;利用VxLAN连通这两个mininet环境。关闭默认的控制器后&#xff0c;通过下发流表确保网络的连通性&#xff1a; 2. 先查看两台虚…

Ajax基石脚本异步并发调用参数传递

在Ajax开发框架中&#xff0c;最基本的划分是服务器端和客户端。服务器端相对来说比较简单&#xff0c;只要是可以开发动态网页的语言都可以胜任&#xff1b;客户端浏览器就是JScript/JavaScript的天下了&#xff0c;好像没有看到有VBScript做的Ajax客户端库&#xff0c;就算它…

matlab disteclud,机器学习实战ByMatlab(3)K-means算法

K-means算法属于无监督学习聚类算法&#xff0c;其计算步骤还是挺简单的&#xff0c;思想也挺容易理解&#xff0c;而且还可以在思想中体会到EM算法的思想。K-means 算法的优缺点&#xff1a;1.优点&#xff1a;容易实现2.缺点&#xff1a;可能收敛到局部最小值&#xff0c;在大…