以许框架提供的导入配置功能,已经能解决95%以上的导入状况,但有些状况总归仍是得代码来解决。html
本篇介绍与导入相关的代码。前端
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 = "随意了...";
}
若是不知道在哪写代码,看:ASP.NET Aries 开源开发框架:开发指南(一) 了解最后框架的请求流程。数据库
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:框架
内部处理流程:
一、将中文列头翻译成英文。
二、将键值对的中文转换成数值。
三、处理一些默认值设置问题。
四、完成基础的数据验证(必填、是否为Null,长度、数据类型)
ExcelConfig.AcceptChanges(dt, excelInfo, ObjName);ide
系统会根据高级Excel配置项的内容进行复杂的处理,并根据配置决定是更新仍是插入。
对于ExcelConfig。AcceptChanges的方法,还多了一个高级扩展,让你能够在每条数据发生动做的先后能够处理些事情。post
具体看:Aries.Logic项目下的ExcelConfigExtend.cs文件。url
若是是要增长数据验证、或者补齐数据,那么重写:BeforeImport事件,就很必要。spa
若是是每行数据发生的先后,须要作点事情,那么,在Aries.Logic.ExcelConfigExtend中补点代码就能够了。翻译