博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Aries 高级开发教程:Excel导入之代码编写(番外篇)
阅读量:5054 次
发布时间:2019-06-12

本文共 2048 字,大约阅读时间需要 6 分钟。

前言:

以许框架提供的导入配置功能,已经能解决95%以上的导入情况,但有些情况总归还是得代码来解决。

本篇介绍与导入相关的代码。

1、前端追加导入时Post的参数:

var grid = new AR.DataGrid('V_Test', 'Demo_TestA');//...... /* 导入前追加一些Post参数 */    grid.ToolBar.BtnImport.onBeforeExecute = function (para)    {        alert("导入的参数:" + JSON.stringify(para));        para.Name = "追加一个名字,Excel导入配置的格式化可以配置@Name";        para.Para2 = "随意了...";    }

2、后端代码拦截导入事件:

如果不知道在哪写代码,看: 了解最后框架的请求流程。

public override ImportResult BeforeImport(MDataTable dt, MDataRow excelInfo, out string msg)        {            if (dt.TableName == "V_UserList")//只处理特定的(视图对象)表            {                //参数说明:                //dt 从Excel导读出来的数据表,列头还是中文的                //excelInfo 高级Excel配置(若有配置的话,没配置则为null)                msg = "错误信息,只有返回false时才有用";                if (msg == "自己处理完逻辑")                {                    //自己补充逻辑                    bool result = FormatExcel(dt, excelInfo);//调用系统方法,把列头中文翻译成英文,把下拉项目的中文翻译成值                    if (result)                    {                        //自己写插入数据库的方法。                        //result = ExcelConfig.AcceptChanges(dt, excelInfo, ObjName);// dt.AcceptChanges(AcceptOp.Auto);                    }                    return ImportResult.True;                }                else if (msg == "自己处理完逻辑,中止执行,返回处理失败")                {                    return ImportResult.True;                }                else                {                    //自已只处理了dt的里数据。                    return ImportResult.Continue;//继续让框架处理下去                }            }            return base.BeforeImport(dt,excelInfo,out msg);        }

框架的提供的核心方法有两个:

FormatExcel:

内部处理流程:1、将中文列头翻译成英文。2、将键值对的中文转换成数值。3、处理一些默认值设置问题。4、完成基础的数据验证(必填、是否为Null,长度、数据类型)

ExcelConfig.AcceptChanges(dt, excelInfo, ObjName);

系统会根据高级Excel配置项的内容进行复杂的处理,并根据配置决定是更新还是插入。

对于ExcelConfig。AcceptChanges的方法,还多了一个高级扩展,让你可以在每条数据发生动作的前后可以处理些事情。

具体看:Aries.Logic项目下的ExcelConfigExtend.cs文件。

总结说明:

如果是要增加数据验证、或者补齐数据,那么重写:BeforeImport事件,就很必要。

如果是每行数据发生的前后,需要做点事情,那么,在Aries.Logic.ExcelConfigExtend中补点代码就可以了。

转载于:https://www.cnblogs.com/cyq1162/p/9571085.html

你可能感兴趣的文章
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>