目的: 將資料內容印至標籤印表機
處理說明 : 1>Browser前端無法取得本機的印表機清單, 也無法設定本機印表機的頁面長寬
2>將資料寫入 xls檔案, 傳送至本機前端, 由使用者自行選擇標籤印表機後,列印
--> 如何將前端store的 3筆資料,送至後端去處理,將這3筆資料填入樣板檔
3>將檔案寫入 pdf檔案網頁 , 由使用者按右鍵列印, 仍要選擇印表機
-JSON Serialize & DeSerialize
2>c# - 將 np 參數的 JSON 字串, 轉 Object
1>js 將 store 的資料轉成 JSON String - *.js
var Tmp_data_JSON = ""; //將store資料轉成 JSON 的字串
var Tmp_sub_np = {};
let Tmp_DataAry = [];
var Tmp_Str="";
for (i = 0; i < Tmp_sub_store.getCount(); i++) {
cur_rec = Tmp_sub_store.getAt(i);
Tmp_Str = "第" + i.toString() + "筆";
console.log(Tmp_Str+"cur_rec:", cur_rec);
Tmp_SAPNO = cur_rec.data['SAPNO'];
Tmp_PN = cur_rec.data['PN'];
Tmp_QTY = cur_rec.data['QTY'];
Tmp_EOCND = cur_rec.data['EOCND'];
Tmp_RMK = cur_rec.data['RMK'];
Tmp_sub_np = {
SAPNO: Tmp_SAPNO,
PN: Tmp_PN,
QTY: Tmp_QTY,
EOCND: Tmp_EOCND,
RMK: Tmp_RMK,
}
console.log(Tmp_Str + "Tmp_sub_np:", Tmp_sub_np);
Tmp_DataAry.push(Tmp_sub_np);
}
console.log("Tmp_DataAry:", Tmp_DataAry);
let Tmp_DataString = JSON.stringify(Tmp_DataAry);
console.log("Tmp_DataString:", Tmp_DataString);
var np = {};
np = {
DataString: Tmp_DataString //Tmp_DataString: 將目前子畫面的資料轉成 JSON字串
};
Ext.getCmp('mySubForm').submit({
//Ext.Ajax.request({
url: '../../api/V120502API/DoPRNLIST',
method: 'POST',
async: false,
standardSubmit: true, // 非 Ajax 的方式 //若要傳送檔案至前端, standardSubmit必需設為 true
params: np,
});
public class DataCls
{
public string SAPNO { get; set; } //SAP工號
public string PN { get; set; } //件號
public int QTY { get; set; } //數量
public string EOCND { get; set; } //EO+CND
public string RMK { get; set; } //備註
}
[HttpPost]
public void DoPRNLIST()
{
var c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
// 1>將 SS_FILES.FBOLD 存成 Local檔案
//取得目前子畫面的欄位值
string Tmp_DataString = nvc["DataString"];
List<DataCls> DataObjList = (List<DataCls>) JsonConvert.DeserializeObject(Tmp_DataString, (typeof(List<DataCls>)));
string Tmp_SAPNO, Tmp_PN, Tmp_EOCND, Tmp_RMK;
int Tmp_QTY;
DataCls DataObj;
for (var i=0;i<DataObjList.Count;i++)
{
DataObj = DataObjList[i];
Tmp_SAPNO=DataObj.SAPNO;
Tmp_PN = DataObj.PN;
Tmp_EOCND= DataObj.EOCND;
Tmp_RMK = DataObj.RMK;
}
二.利用現有Table class,將 Table 資料(Object)轉成 JSON字串, 再將 JSON字串轉成 Table(Object)
1>js , 將Object資料(Table)轉成 JSON String , 當參數傳至後端
let Tmp_DataAry1 = [];
var Tmp_Str="";
for (i = 0; i < Tmp_sub_store.getCount(); i++) {
cur_rec = Tmp_sub_store.getAt(i);
console.log(Tmp_Str + "cur_rec:", cur_rec);
Tmp_DataAry1.push(cur_rec.data);
}
let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
var np = {};
np = {
DataString1: Tmp_DataString1 //Tmp_DataString: 將目前子畫面的資料(Table)轉成 JSON字串
};
Ext.getCmp('mySubForm').submit({
//Ext.Ajax.request({
url: '../../api/V120502API/DoPRNLIST',
method: 'POST',
async: false,
standardSubmit: true, // 非 Ajax 的方式 //若要傳送檔案至前端, standardSubmit必需設為 true
params: np,
});
2>cs , 將參數(JSON String)轉成 Table(Object) , 讀取 Object 屬性值
//加入JSON格式轉換參考 , JsonConvert.DeserialObject(,)
using Newtonsoft.Json;
public void DoPRNLIST()
{
var c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
//取得目前子畫面的欄位值
string Tmp_DataString1 = nvc["DataString1"];//Tmp_DataString: 將目前子畫面的資料. JSON字串 DataTable DataTable1=(DataTable)JsonConvert.DeserializeObject(Tmp_DataString1, (typeof(DataTable)));
string Tmp_SAPNO, Tmp_PN, Tmp_EOCND, Tmp_RMK;
int Tmp_QTY;
for (var i=0; i<DataTable1.Rows.Count;i++)
{
Tmp_SAPNO = DataTable1.Rows[i]["SAPNO"].ToString();
Tmp_PN = DataTable1.Rows[i]["PN"].ToString();
Tmp_QTY = int.Parse(DataTable1.Rows[i]["QTY"].ToString());
Tmp_EOCND = DataTable1.Rows[i]["EOCND"].ToString();
Tmp_RMK = DataTable1.Rows[i]["RMK"].ToString();
}
沒有留言:
張貼留言