2023年9月26日 星期二

V120602 – [匯入][匯出]鈕 - 匯出所有資料 – New – V120602A() , V120602B()

 目的: V120602 – [匯入][匯出] – New – V120602A() , V120602B()

處理說明:  1>匯出 
                        1>> 將目前Grid 所有的資料,存成 Tmp_DataAry1, 以 np 傳至後端
                                --> 但是欄位值含HTML(
..) , 會出現錯誤訊息..
                               -->  所以改至後端直接讀取 DataSet ds = V120602Controller.getGridData_M(false);
                        2>>將 ds.Tables["T1"] 寫入 *.xlsx
                   2>匯入
                        //範例: V20301 - [批次新增]鈕
                        {
                           xtype: 'button', text: '批次新增', id: 'BatchAddBtn',
                           listeners: {
                           click: function (me,e,eOpts) {
                                //挑選檔案,傳入 CallBack函式(按OK時的處理函式 - Ok_process)
                                SelectFile(Ok_process);
                             }
                          }
                      },


                           




1>V120602.js
//按鈕 :  [匯入] [匯出][維護 Delay Notification Form] [QDR Report][可施工統計表]
    var BtnAry = [
        {
            xtype: 'button', text: '匯入', id: 'XlsInBtn', iconCls: 'icon-check',
            listeners: {
                click: function () {
                    //XlsInBtn_click() ;
                    //[匯入]鈕 ,    xtype: 'filefield',   以 file輸入元件 , 將檔案傳送至後端 , form.submit;
                    Call_V120602A();
                }
            }
        }, //end of  匯入
        {  //以 將目前 Master 的資料,傳送至後端取得資料匯出 
            xtype: 'button', text: '匯出', id: 'XlsOutBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 匯出EXCEL: ");
                    //XlsOutBtn_click();  // - 將目前 Master 的資料,傳送至後端取得資料匯出 
                    Call_V120602B();
                }
            }
        },        
    ];


2>>V120602B.js
//[匯出]鈕 -  - 只匯出資料,無子畫面
function Call_V120602B() {
    var Tmp_Grid = Ext.getCmp('grid_Single');
    var cur_recs, cur_rec;
    var Tmp_SAPNO, Tmp_PN, Tmp_QTY, Tmp_EOCND, Tmp_RMK;
    var Tmp_data_JSON = "";  //將store資料轉成 JSON 的字串
    var Tmp_sub_np = {};
    let Tmp_DataAry1 = [];
    var Tmp_Str = "";
    //cur_recs = Tmp_Grid.getView().selModel.getSelection();
    //console.log("cur_recs:", cur_recs);
    if (Tmp_Grid.store.length == 0) {
        mywarnalert("目前主檔無資料,無法匯出 EXCEL 檔案");
        return;
    }
    //取得目前所勾選資料,再匯出
    for (var i = 0; i < Tmp_Grid.store.getCount(); i++) {
        cur_rec = Tmp_Grid.store.getAt(i);
        console.log("i : ", i);
        console.log("cur_rec :", cur_rec);
        console.log("cur_rec.data :", cur_rec.data);
        if (!(JSON.stringify(cur_rec.data) === '{}')) {
            Tmp_DataAry1.push(cur_rec.data);
        }
    }


    // 將目前子畫面的資料(Table)轉成 JSON字串
    //let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
    //console.log("Tmp_DataString1:", Tmp_DataString1);
    //因為[備註]欄位 有/n .. 等特殊字元 ,  JSON.stringify 會 Error

    var np = {};
    var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞                                                       
    np["s_STAT"] = Ext.getCmp('s_STAT').getValue();
    //np = {
    //    DataString1: Tmp_DataString1,
    //};

    Ext.getCmp('s_form').submit({
        //Ext.Ajax.request({
        url: '../../api/V120602BAPI/XlsOut',
        method: 'POST',
        async: false,
        standardSubmit: true, //若要傳送檔案至前端, standardSubmit必需設為 true  
        params: np,
    });
    //顯示結果訊息..

    var mask = new Ext.LoadMask(Ext.getBody(), {
        msg: '處理中,請稍待...'
    });

    mask.show();//使用 mask 需手動呼叫show() 方法下
    //每1秒檢核一次,是否已完成, 若已完成,則不再檢核
    var timer = setInterval(function () {
        var r = r_cookies('EX_DFile');
        //console.log("r_cookies=", r);
        if (!checkisnull(r)) {
            mysuccessalert(r);
            clearInterval(timer);
            mask.hide();
            timer = null;
        }
    }, 1000);  //1000ms = 1sec
}  // end of  function Call_V120602B() {


1.5>V20301.js  SelectFiles()
//[選擇檔案]子畫面. [確認匯入]鈕 , 處理
function Ok_process(me, e, eOpts) {
    //取得 [檔案上傳].檔名
    var Tmp_FileObj = Ext.getCmp('FName');
    console.log("FName Obj:", Tmp_FileObj);
    var Tmp_Str = "";
    var np = {
        FName: Ext.getDom(Tmp_FileObj.inputId).value
    };
    console.log("FName: ", np.FName);
    //submit會將fileUploadForm裡面input name送到後端
    //Ext.getCmp('btn_FileIn').getForm().submit({
    me.up("form").submit({
        //standardSubmit: false,    //default:false
        url: '../api/V20301API/uploadFileToDB',
        method: 'POST',
        headers: { 'Content-type': 'multipart/form-data' },
        params: np,
        success: function (response, opts) {
            console.log("success opts.response.responseText:", opts.response.responseText);
            var obj = Ext.decode(opts.response.responseText);
            console.log("obj:", obj);
            if (obj["success"]) {
                Tmp_Str = "[匯入]完成 !! <br>"
                    + obj['Rtn_Msg'];
                mysuccessalert(Tmp_Str);
                console.log("success=true , Tmp_Str=", Tmp_Str);
                me.up("window").close();
                me.up("window").destroy();
                Ext.getCmp('btn_Show').fireHandler();
            }
            else {
                Tmp_Str = "[匯入]失敗 !! <br>"
                    + obj['Rtn_Msg'];
                mywarnalert(Tmp_Str);
                //Tmp_Sql = " Tmp_sql :<br> "
                //                 +obj['Tmp_Sql'];
                //mywarnalert(Tmp_Str);
                console.log("success=false , Tmp_Str=", Tmp_Str);
                me.up("window").close();
                me.up("window").destroy();
            };
        },
        failure: function (response, opts) {
            console.log(" failure opts.response.responseText:", opts.response.responseText);
            var obj = Ext.decode(opts.response.responseText);
            console.log("obj:", obj);
            Tmp_Str = "[匯入]失敗!! <br>"
                + "(" + obj['FName'] + ") <br>"
                + obj['Rtn_Msg'];
            mywarnalert(Tmp_Str);
            me.up("window").close();
            me.up("window").destroy();
        }
    });
};  // end of Ok_process() {  //批次新增



2>*.cs
     1>>匯出
            V120602APIController V120602Controller = new V120602APIController();
            DataSet ds = V120602Controller.getGridData_M(false);
            DataTable dt1 = ds.Tables["T1"];

    2>>匯入  
              foreach (string cur_FName in Request.Files)
            {
                 Stream file_Strm = Request.Files[cur_FName].InputStream;
 
             } 
          

沒有留言:

張貼留言