ASP.NET Aries 高級開發教程:Excel導入之代碼編寫(番外篇)


前言:

以許框架提供的導入配置功能,已經能解決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、后端代碼攔截導入事件:

如果不知道在哪寫代碼,看: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:

內部處理流程:

1、將中文列頭翻譯成英文。

2、將鍵值對的中文轉換成數值。

3、處理一些默認值設置問題。

4、完成基礎的數據驗證(必填、是否為Null,長度、數據類型)

ExcelConfig.AcceptChanges(dt, excelInfo, ObjName);

系統會根據高級Excel配置項的內容進行復雜的處理,並根據配置決定是更新還是插入。

對於ExcelConfig。AcceptChanges的方法,還多了一個高級擴展,讓你可以在每條數據發生動作的前后可以處理些事情。

具體看:Aries.Logic項目下的ExcelConfigExtend.cs文件。

總結說明:

如果是要增加數據驗證、或者補齊數據,那么重寫:BeforeImport事件,就很必要。

如果是每行數據發生的前后,需要做點事情,那么,在Aries.Logic.ExcelConfigExtend中補點代碼就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM