以許框架提供的導入配置功能,已經能解決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中補點代碼就能夠了。翻譯