目的: 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() { //批次新增
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;
}