目的: V80202E – 工單附檔瀏覽 – 子畫面 Grid
處理說明: 1>子畫面 - Grid 簡單子畫面
//設定 ReadOnly Field
setFieldsCls('mySubFormI',
[], //required
["sub_RPNOAF", "sub_MRPNOAF", "sub_PN", "sub_SEQOAF",], //readonly
);
//設定 ReadOnly Field
setFieldsCls('mySubFormI',
[], //required
["sub_RPNOAF", "sub_MRPNOAF", "sub_PN", "sub_SEQOAF",], //readonly
);
2>下載檔案:
var Tmp_url = "../api/myAPI/downloadFile2?aTbl=" + Tmp_TblNM
var Tmp_url = "../api/myAPI/downloadFile2?aTbl=" + Tmp_TblNM
+ "&Flds=" + Tmp_Flds + "&aCnd=" + Tmp_Cnd;
document.location = Tmp_url;
document.location = Tmp_url;
--> downloadFile2 傳回 void
--> 呼叫 downloadFile 傳回 file - Byte[]
--> document.location = Tmp_url; - 不可直接傳回 file
3>原始Source VUTLAPIController.cs
var Tmp_url = "../api/VUTLAPI/dnloadFile_Cnd?aTbl=" + Tmp_TblNM + "&Flds=" + Tmp_Flds + "&aCnd=" + Tmp_Cnd;
1>V80202.js - 呼叫子畫面, 傳入目前資料(cur_rec)
{
xtype: 'button', text: '工單附檔瀏覽', id: 'Call_V80202E_Btn',
listeners: {
click: function () {
var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
if (cur_recs.length == 0) {
mywarnalert("請先選擇資料");
return false;
}
var cur_rec = cur_recs[0];
Call_V80202E(cur_rec);
}
}
},
{
xtype: 'button', text: '工單附檔瀏覽', id: 'Call_V80202E_Btn',
listeners: {
click: function () {
var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
if (cur_recs.length == 0) {
mywarnalert("請先選擇資料");
return false;
}
var cur_rec = cur_recs[0];
Call_V80202E(cur_rec);
}
}
},
2>V80202E.js - 子畫面 Call_V80202E(par_rec)
function Call_V80202E(par_rec) {
var Tmp_AMMNO = nulltoStr(par_rec.data['AMMNO']).toString();
var cmp_sub_AMMNO = get_cmp_txt1('AMM單號', 'sub_AMMNO', 80, 130);
var cmp_sub_SAPNO = get_cmp_txt1('工號', 'sub_SAPNO', 80, 130);
var cmp_sub_PN = get_cmp_txt1('件號', 'sub_PN', 80, 130);
//子畫面欄位 & Grid
var sub_V80202E_Flds = [
{
type: 'panel', bodyStyle: "background-color:transparent;", border: 5, padding: "1",
layout: 'border',
items: [
{
xtype: 'panel', id: 'sub_panel1', region: 'north', layout: 'hbox',
height: 30,
items: [
{
xtype: 'panel', id: 'sub_panel11', layout: { type: 'hbox', align: 'stretch' }, flex: 25, border: 0,
items: [cmp_sub_AMMNO, cmp_sub_SAPNO, cmp_sub_PN,],
}, // end of sub_panel11
] //end of sub_panel1.items,
}, // end of sub_panel1
{
xtype: 'panel',
id: 'sub_panel2',region: 'center',layout: 'fit',
border: 1,
items: [sub_Grid]
},
] // end of layout: "vbox", padding: "5", items: [
} //end of sub_ShowPN_Flds , items[{
] //end of var sub_ShowPN_Flds
//子畫面按鈕
//按鈕 : [附檔瀏覽] [離開] 鈕
var sub_V80202E_Btns = [
{
xtype: 'button', text: '附檔瀏覽', id: 'sub_V80202E_OkBtn',
//flex: 5,
listeners: {
click: function () {
//mysuccessalert("mysub2_確定 ");
//檢核 AMM項次的需求工時正確, 若有問題,則 Tmp_isOk=false, 若沒問題, Tmp_isOk=true, 才執行[確認]的處理
V80202E_OK();
}
}
},
{
xtype: 'button', text: '離開', id: 'sub_V80202E_CancelBtn',
//flex: 5,
listeners: {
click: function () {
//mysuccessalert("mysub2_取消");
var Tmp_win = this.up("window");
if (Tmp_win == undefined) {
Ext.Msg.alert("取消時未取到Window Object");
}
this.up("window").close();
this.up("window").destroy();
}
}
},
];
var win1 = getMyWindow("工單附檔瀏覽", sub_V80202E_Flds, sub_V80202E_Btns, "A");
win1.x = 100;
win1.setWidth(800);
win1.setHeight(300);
//取得子畫面.欄位值
var np = {};
np["sub_AMMNO"] = Tmp_AMMNO;
Ext.getCmp('sub_Grid').store.getProxy().url = '../../api/V80202EAPI/get_sub_data1',
Ext.getCmp('sub_Grid').store.getProxy().extraParams = np; //分頁OK,篩選條件OK
Ext.getCmp('sub_Grid').store.load();
//設定子畫面欄位值
var Tmp_AMMNO, Tmp_SAPNO, Tmp_PN;
Tmp_AMMNO = nulltoStr(par_rec.data['AMMNO']).toString();
Tmp_SAPNO = nulltoStr(par_rec.data['SAPNO']).toString();
Tmp_PN = nulltoStr(par_rec.data['PN']).toString();
Ext.getCmp("sub_AMMNO").setValue(Tmp_AMMNO);
Ext.getCmp("sub_SAPNO").setValue(Tmp_SAPNO);
Ext.getCmp("sub_PN").setValue(Tmp_PN);
win1.show();
function V80202E_OK() {
//1>目前挑選資料
var cur_recs = Ext.getCmp('sub_Grid').getSelectionModel().getSelection();
if (cur_recs.length == 0) {
mywarnalert("請先選擇資料");
return;
}
var cur_rec = cur_recs[0];
var Tmp_FILENO = nulltoStr(cur_rec.data["FILENO"]).toString();
var Tmp_TblNM;
var Tmp_Flds;
var Tmp_Cnd;
if (checkisnull(Tmp_FILENO)) {
//若 FILENO 無值,則瀏覽 AMM_OSMF
Tmp_TblNM = "AMM_OSMF";
Tmp_Flds = "FILENAME,FILEBODY";
Tmp_Cnd = " AND AMMNO=" + AA(cur_rec.data["AMMNO"])
+ " AND ITM=" + AA(cur_rec.data["ITM"]);
}
else {
//若 FILENO 有值,則瀏覽 AMM_DFILESD
Tmp_TblNM = "AMM_DFILESD";
Tmp_Flds = "DFNAME,DBLOB";
Tmp_Cnd = " AND FILENO=" + AA(cur_rec.data["FILENO"]);
}
var Tmp_url = "../api/VUTLAPI/dnloadFile_Cnd?aTbl=" + Tmp_TblNM + "&Flds=" + Tmp_Flds + "&aCnd=" + Tmp_Cnd;
document.location = Tmp_url;
} //end of V80202E_OK
PS: BaseAPIController.cs -downloadFile
利用 downloadFile 傳入 SQL 及 檔案名稱欄位名 , 檔案內容欄位名
//public byte[] downloadFile(string sql, string fileName, string fileBody,bool inline=false)
/*
byte[] file = null;
try
{ downloadFile(Tmp_Sql, 'FILENAME', 'FILEBODY'); }
catch (Exception ex)
{ throw ex; } //檔案無法讀取,仍會下載 byte=0
finally
{ }
return file;
*/
PS: myAPIController.cs - downloadFile2
var Tmp_url = "../api/myAPI/downloadFile2?aTbl=" + Tmp_TblNM + "&Flds=" + Tmp_Flds + "&aCnd=" + Tmp_Cnd;
沒有留言:
張貼留言