目的: V20302 - 下載文字檔案至前端
處理說明: 1> 必需用 form.submit , 不可用 Ext.Ajax
2> standardSubmit: true, 必用設為 true
2> standardSubmit: true, 必用設為 true
1>1>*.js
// //[確認除帳]鈕 -
function DoRemoveBtn_click() {
var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
if (cur_recs.length == 0) {
mywarnalert("請先選擇要編輯的資料");
return false;
}
var cur_rec;
let Tmp_DataAry1 = [];
var Tmp_RPNOAF;
var Tmp_Str="";
console.log("cur_recs.length:", cur_recs.length);
//判斷約別, 不可空白, 若有空白,則顯示訊息,不再往下
for (let i = 0; i <= cur_recs.length - 1; i++) {
console.log("i:", i);
cur_rec = cur_recs[i];
if (checkisnull(cur_rec.data["TYPEAF"])) {
Tmp_Str = Tmp_Str + "系統件單號(" + cur_rec.data["FMNO"] + ")的約別不可空白<br>";
}
} // for i=0 to
if (Tmp_Str.length > 0) {
Tmp_Str = Tmp_Str
+ "請檢核 !!<br>";
mywarnalert(Tmp_Str);
return;
}
//判斷約別是否一致 & 執行結果是否有錯誤, 若有,則存成 *_log.txt 傳至前端
//若有成功除帳的資料,則發 Email 通知使用者
for (let i = 0; i <= cur_recs.length - 1; i++) {
console.log("i:", i);
cur_rec = cur_recs[i];
Tmp_DataAry1.push(cur_rec.data);
} // for i=0 to
let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
var np = {};
np["DataString1"] = Tmp_DataString1;
var isOk = true;
///若下載檔案至前端, 則不可用 Ext.Ajax
//Ext.Ajax.request({
Ext.getCmp('s_form').submit({
method: "POST",
url: '../../api/V20302API/DoRemove',
standardSubmit: true,
params: np,
async: false,
success: function (response, opts) {
console.log("0 response.responseText=", response.responseText);
var Tmp_Obj = Ext.decode(response.responseText);
console.log("1 Tmp_Obj=", Tmp_Obj);
if (Tmp_Obj["success"] == false) {
var Tmp_RtnMsg = "系統件除帳,錯誤訊息如下: <br>"
+ Tmp_Obj["Rtn_Msg"];
mywarnalert(Tmp_RtnMsg);
isOk = false;
}
else {
Tmp_Str = "系統件除帳 OK <br>";
mywarnalert(Tmp_Str);
};
}, //end of success
failure: function (response, opts) {
var Tmp_Obj = Ext.decode(response.responseText);
var Tmp_Rtn_Msg = "系統件除帳,錯誤訊息如下: <br>"
+ Tmp_Obj["Rtn_Msg"];
mywarnalert(Tmp_Rtn_Msg);
isOk = false;
}
}) //end of Ext.Ajax.Request
}; // end of function ConfirmRemoveBtn_click() {
2>
2>2>*.cs
pupublic void DoRemove()
{
var c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));//
OracleCommand cmd = new OracleCommand();
OracleDataReader reader;
var response = Request.CreateResponse();
conn.Open();
string Tmp_RtnMsg;
try
{
conn.ClientInfo = User.Identity.Name;
conn.ModuleName = BaseSYS + "_" + BaseMODID;
conn.ActionName = ActionName;
cmd.Connection = conn;
string Tmp_Sql = "";
string Tmp_out_FName = "V20306_系統件除帳_log.txt"; //處理_log.txt
string documentPath=HttpContext.Current.Server.MapPath("~") +"document\\"; //取得實實的路徑
string Tmp_out_pFName = documentPath + Tmp_out_FName; //含 path 的Filename
if (File.Exists(Tmp_out_pFName))
{
File.Delete(Tmp_out_pFName);
}
//將 table 字串轉成 DataTable
//DataTable DataTable1 = (DataTable)JsonConvert.DeserializeObject(Tmp_DataString1, (typeof(DataTable)));
string Tmp_DataString1 = nvc["DataString1"]; //Tmp_DataString: 將目前子畫面的資料. JSON字串
DataTable dt1 = myfunc.JSON2dt(Tmp_DataString1);
//每筆資料列印後, 不分頁列印下一筆
string Tmp_FMNO;
string Tmp_Str, Tmp_RPNOAF, Tmp_CSM_TYPEAF, Tmp_FM_TYPEAF;
//using (StreamWriter sw = new StreamWriter(Tmp_out_pFName)) //小寫TXT
//不用 sw, 改用File.AppendText(Tmp_out_pFName,Tmp_Str)
{
for (var i = 0; i < dt1.Rows.Count; i++)
{
Tmp_FMNO = dt1.Rows[i]["FMNO"].ToString();
Tmp_Sql = " SELECT A.RPNOAF,A.TYPEAF as CSM_TYPEAF,B.TYPEAF as FM_TYPEAF "
+ " FROM CSM_AF@TLS_245 A, AMM_FM B "
+ " WHERE A.RPNOAF = nvl(B.MRPNOAF, B.RPNOAF) "
+ " AND B.FMNO = " + myfunc.AA(Tmp_FMNO);
Tmp_Str = myfunc.SqlValue(Tmp_Sql);
Tmp_RPNOAF = myfunc.StrExtract(Tmp_Str, 1);
Tmp_CSM_TYPEAF = myfunc.StrExtract(Tmp_Str, 2);
Tmp_FM_TYPEAF = myfunc.StrExtract(Tmp_Str, 3);
if (Tmp_CSM_TYPEAF != Tmp_FM_TYPEAF)
{
Tmp_Str = "交修單號(" + Tmp_RPNOAF + ")"
+ " AMM約別(" + Tmp_FM_TYPEAF + ") "
+ "和 TLS的約別(" + Tmp_CSM_TYPEAF + ") 不同 ,"
+ "敬請檢核!!<br>";
// //sw.WriteLine(Tmp_Str);
File.AppendAllText(Tmp_out_pFName, Tmp_Str); //不用 sw , 改用 File.AppendAllText
}
}// for (var i = 0; i < dt1.Rows.Count; i++)
// sw.Close才會實際寫入檔案(Tmp_out_pFName)
// //sw.Close();
//讀取檔案的文字內容 , 若內容>0 ,郥 success : false , 傳回檔案內容
//string Tmp_FStr = File.ReadAllText(Tmp_out_pFName);
//if (Tmp_FStr.Length>0)
//{
// Tmp_RtnMsg = "[確認除帳]失敗 !! <br>"
// + Tmp_FStr;
// response.Content = new StringContent("{success: false,Rtn_Msg:" + Tmp_RtnMsg+ "}"); // 回應內容
//}
//else
// response.Content = new StringContent("{success: true,Rtn_Msg:約別正確}"); // 回應內容
//return response;
////FileInfo fileInfo = new FileInfo(Tmp_out_pFName);
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode((string)Tmp_out_FName, System.Text.Encoding.UTF8) + "\"");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "text/plain";
////HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.WriteFile(Tmp_out_pFName);
//////包裝標籤檔產生完成
////Tmp_Str = "產生包裝匯出檔案成功<br>"
//// + "(" + FileName + ")<br>";
////MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_Str));
////HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.Response.End();
};// using
} // end of try
catch (Exception e)
{
string Tmp_msg;
Tmp_msg = myfunc.Get1ORA(e.Message);
Tmp_RtnMsg = "[確認除帳]失敗 !! <br>"
+ Tmp_msg;
//response.Content = new StringContent("{'success': false,'Rtn_Msg':'" + Tmp_RtnMsg + "'}"); // 回應內容
//return response;
}
finally
{
conn.Close();
}
} // end of DoRemove
1
沒有留言:
張貼留言