目的: 匯出 XLS檔案, 若 [標準工時][已報工時] – 若空白,則顯示 0.00 , 格式化小數2位
處理說明: 一 *.cs Substring,ToString()
1>Double.Parse(dt.Rows[i]["STDHRS"].ToString("0.00"));
2>DateTime.Parse(Tmp_dt.Rows[i]["BRDT"].ToString()).ToString("yyyy/MM/dd");
--> myfunc.Date2Str(Tmp_dt.Rows[i]["BRDT"].ToString());
//日期格式 yyyy/mm/dd
DateTime.Now.ToString("yyyy/MM/dd");
string Tmp_TATM = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss");
3>Tmp_Str.Substring(pos,len);
//去除尾碼;
--> Tmp_Str=Tmp_Str.Substring(Tmp_Str.Length-1,1);
4>var Tmp_int=3; Tmp_int.ToString();
5>日期加 1天 Datetime.AddDays
DateTime.Now.AddDays(1).ToShortDateString();
Tmp_APDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_APDT2"]).AddDays(1));
二. *.js substring , substr,toString(), trim()
1> par_format = 'Y/m/d H:i'; //日期格式 yyyy/mm/dd hh/mm , Tmp_DateStr = Ext.Date.format(new Date(par_date), par_format);
{ header: "執行時間", dataIndex: "TATM", width: 150, sortable: false, TMType: "date", renderer: Ext.util.Format.dateRenderer('Y/m/d H:i') },
2>Tmp_Str.substring(pos1,pos2);
Tmp_Str.substr(pos1,len);
Ex:
string Tmp_Str="goodboy";
Tmp_Str=Tmp_Str.substring(0,3); // Tmp_Str=good
Tmp_Str=Tmp_Str.substr(0,2); // Tmp_Str=go
3>var Tmp_int=24; //將數字轉成字串
mysuccessalert(Tmp_int.toString()) ;
4>將文字轉成數字 Number(Tmp_Str)
var Tmp_Str="24";
Tmp_int=Number(Tmp_Str);
5>設定文字顏色
{
xtype: "label", text: "(請刷識別證)", width: 120, border: 2,
style: "font-size: 12pt; color: blue; background: gray; ",
},
6> - 粗體字體
var cmp_TAMAN_lbl = get_cmp_lbl0("(請刷識別證)", 130);
cmp_TAMAN_lbl.style = "font-size: 12pt; color: blue; ";
cmp_TAMAN_lbl.margin = "0 0 0 10";
7>判斷是否null
if (checkisnull(cur_rec)) {
mysuccessalert("空值 ") ;
}
--.> undefined
if (par_str == '') ||
(typeof (par_str) == 'undefined') ||
--.> 判斷空Object {}
if (typeof (par_str) == 'object') && (Object.keys(par_str).length === 0)
6> null.toString() --> Error , rec["MATNR"].toString() --> Error
所以先 rec2str(rec); 將 null 欄位值轉成 ''
7> par_str=0 , 則 par_str == '', true, ---> 需注意
--> 需改成 if (par_str==='') , false --> 正確
8>type of 日期 --> Object
checkisnull(日期) --> 會傳回 true
--> if ((typeof (par_str) == 'object') && (Object.keys(par_str).length === 0))
return true;
--> 所以判斷日期空白,不用 checkisnull , 改用 if (par_date.length==0) {}
DatetoStr(cnow(),"Y/m/d")
Tmp_DT = DatetoStr(now, "Y/m/d");
9>設定 HTML欄位屬性 - setFieldsCls
setFieldsCls('mySubFormE',
[], //required
['sub_DELMAN','sub_TASKNO', 'sub_RQMAN', 'sub_RQDT',
_RQDEP', 'sub_STLC', 'sub_EDLC', 'sub_TASKREMARK',],//readonly
['sub_DELCAUSE']);
10>判斷字串是否為數字: isNaN(Number(par_SAPNO, 10))
if (isNaN(Number(par_SAPNO, 10))) {
return par_SAPNO; //QDR工單/ICSU工單
}
else
return par_ORStr + "0000" + par_SAPNO; //一般工單
11>string.trim()
if (Tmp_C_UNIT.trim() != "")
三.*.js - null
null.toString() null.length 均會有問題
所以欄位.toString() 欄位.length 時必需先過濾 欄位值==null
function DatetoStr(par_date, par_format) {
if (checkisnull(par_date)) {
return "";
}
}
myfunc.js
nulltoStr(par_Fld) ,
一. c# *.cs
1>sheet1.Range[myfunc.GetExcelPos(6, i + 1)].Text =
Double.Parse(dt.Rows[i]["STDHRS"].ToString("0.00"))
//另一方法 String.Format("{0:0.00}", Double.Parse(dt.Rows[i]["STDHRS"].ToString()));
if (myfunc.checkisnull(dt.Rows[i]["ALSHR_"].ToString()))
{ sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text = "0.00"; }
else
{
sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text =
Double.Parse(dt.Rows[i]["ALSHR_"].ToString("0.00"));
// String.Format("{0:0.00}", Double.Parse(dt.Rows[i]["ALSHR_"].ToString()));
}
2>格式化日期:
sheet1.Range[myfunc.GetExcelPos(0, i + 1)].Text =
DateTime.Parse(dt.Rows[i]["DT"].ToString("yyyy/MM/dd"));
//另一方法 :String.Format("{0:yyyy/MM/dd}", DateTime.Parse(dt.Rows[i]["DT"].ToString()));
3>格式化時間:
Tmp_MKTM = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
if (Tmp_dt.Rows[i]["BRDT"].ToString().Length > 0)
Tmp_BRDT = DateTime.Parse(Tmp_dt.Rows[i]["BRDT"].ToString()).ToString("yyyy/MM/dd");
else
Tmp_BRDT = "";
4>NEXT PK: 流水號+1 - string.SubString(pos,length)
Tmp_NEXT_ASPNO = Tmp_ASPNO + (int.Parse(Tmp_MAX_ASPNO.Substring(11, 3))+1).ToString("000");
二.*.js - 格式化日期 YYYYMMDD
1>>*.js
Ext.Loader.loadScript({ url: '../Scripts/tlsbase.js' }); // for logininfo.id
np["ASPNO"] = "ASP" + DatetoStr(now, "Ymd");
var Tmp_cur_DT = DatetoStr(cnow(), "Y/m/d");
var Tmp_MKER = loginInfo.id;
var Tmp_MKDT = DatetoStr(now, "Y/m/d");
Ext.getCmp("MKER").setValue(Tmp_MKER);
Ext.getCmp("MKDT").setValue(Tmp_MKDT);
function DatetoStr(par_date,par_format) {
var Tmp_DateStr;
if (checkisnull(par_format))
par_format = 'Y/m/d'; //日期格式 Y/m/d : yyyy/mm/dd , Ymd: yyyymmdd
Tmp_DateStr = Ext.Date.format(new Date(par_date), par_format);
return Tmp_DateStr;
}
{ header: "執行時間", dataIndex: "TATM", width: 150, sortable: false, TMType: "date", renderer: Ext.util.Format.dateRenderer('Y/m/d H:i') },
2>Tmp_Str.substring(startpos,endpos)
.substr(startpos,length)
string Tmp_Str="goodboy";
Tmp_Str=Tmp_Str.substring(0,3); // Tmp_Str=good
Tmp_Str=Tmp_Str.substr(0,2); // Tmp_Str=go
3>字串轉數字
Number(Tmp_Str);
Number("30");
4>字串是否在長字串中 , stringObject.indexOf(searchvalue,fromIndex)
let myStr = "A012";
myStr.indexOf("[",0);
三. *.cs
1>字串轉數字
int Tmp_cnt=int.Parse(myfunc.SqlValue(Tmp_Sql));
2>trim 字串
var Tmp_Str="ABC ";
Tmp_Str.Trim(); //--> "ABC"
2>判斷字串是否為數字
public static string get_SAPNO(string par_SAPNO,string par_ORStr="")
int n;
bool isNum = int.TryParse(par_SAPNO, out n);
if (isNum)
return par_SAPNO;
else
return par_ORStr + "0000" + par_SAPNO;
沒有留言:
張貼留言