目的: V20304A – 工時提列 – 子畫面.下方按鈕 – 加入顯示欄位
2024年4月10日 星期三
V20304A – 工時提列 – 子畫面.下方按鈕 – 加入顯示欄位
處理說明:
1> 利用 Btn_Ary
2> Buttons : Btn_Ary -- (ToolBar)
3> 直接將 欄位s 加入 Btn_Ary 即可
4> 若 [欄位s ] 包成 Panel , 加入 Btn_Ary , 則只顯示 Panel 框, 不會顯示 Panel 的欄位
//按鈕 : [確認] [取消] 鈕
var cmp_sub_RPNOAF_TALHR = get_cmp_txt1('拆檢工時', 'sub_RPNOAF_TALHR', 80, 130,15);
var cmp_sub_MRPNOAF_TALHR = get_cmp_txt1('維修工時', 'sub_MRPNOAF_TALHR', 80, 130,15);
var cmp_sub_TALHR_CAL_btn = get_cmp_btn1('工時合計', 'sub_TALHR_CAL', 5);
var cmp_sub_TMP1 = get_cmp_panel1(200);
var cmp_sub_TMP2 = get_cmp_panel1(200);
//如下以 panel 包 欄位,按鈕, 不會顯示欄位+按鈕
/*
var sub_V20304A_TALHR =
{
type: 'panel', border: 2,
flex: 25,
layout: 'hbox',
//items: [cmp_sub_RPNOAF_TALHR, cmp_sub_MRPNOAF_TALHR, cmp_sub_TALHR_CAL_btn],
items: [{
xtype: 'panel', id: 'sub_panel1', layout: 'hbox', border:1,
height: 20,
items: [cmp_sub_RPNOAF_TALHR,'-'],
},
]
};
*/
//直接將[欄位s]加入 Btn_Ary
// '-' : 出現垂直的分隔線
var sub_V20304A_Btns = [
//sub_V20304A_TALHR, //以 panel 包 欄位,按鈕, 不會顯示欄位+按鈕
cmp_sub_RPNOAF_TALHR, cmp_sub_MRPNOAF_TALHR, cmp_sub_TALHR_CAL_btn,
'-',
cmp_sub_TMP1, cmp_sub_TMP2,
{
xtype: 'button', text: '確認', id: 'sub_V20304A_OkBtn', flex:5,
listeners: {
click: function () {
//mysuccessalert("mysub2_確定 ");
V20304A_OK();
}
}
},
{
xtype: 'button', text: '取消', id: 'sub_V20304A_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_V20304A_Flds, sub_V20304A_Btns, "A");
var mySubForm = Ext.create('Ext.FormPanel', {
autoScroll: false,
fieldDefaults: { labelAlign: 'right', },
layout: 'fit',
//layout: { xtype: 'vbox', align: 'stretch' },
id: "mySubForm"+par_uni,
form_id: "mySubForm",
items: par_FieldsAry,
buttonAlign: 'center',
buttons: par_BtnAry,
}); // end of mySubForm
2024年4月9日 星期二
V20301 -[複製]鈕 - null 的問題 - null.length - null.toString() 都會有問題
目的: null.length 會出現 Error
處理說明 : 1> 寫 par_date.length 時, 先判斷 if (checkisnull(par_date)) {return ""};
1>myfunc.js
//par_date 必需傳入字串,不可傳入日期格式 --> 因 checkisnull(日期) 會傳回 true
//若 par_date == null ,則 null.length 會 Error
function DatetoStr(par_date, par_format) {
if (checkisnull(par_date)) {
return "";
}
if (par_date.length == 0) { //若 par_date==null ,則 null.length 會 Error
return "";
}
var Tmp_DateStr;
if (checkisnull(par_format))
par_format = 'Y/m/d';
Tmp_DateStr = Ext.Date.format(new Date(par_date), par_format);
return Tmp_DateStr;
}
V20304A – Grid – 編輯欄位 –[需求工時]欄位 , 不可空白 - editor - Ext.grid.plugin.CellEditing
目的: V20304A – Grid – 編輯欄位 –[需求工時]欄位
處理說明: 1> sub_Grid 設為可編輯 :
sub_Grid.plugins : 'Ext.grid.plugin.CellEditing'
2> Columns editor : 欄位設為可編輯
sub_Grid.plugins : 'Ext.grid.plugin.CellEditing'
2> Columns editor : 欄位設為可編輯
editor: 'textfield',
另一方式:
editor: { xtype: 'textfield', allowBlank: false}, //不允許空白
1>>sub_Grid
var sub_Grid = Ext.create('TMGrid', {
grid_id: 'sub_Grid',
columns: sub_Columns,
//autoScroll: true,
flex: 1,
store: Ext.create('gridstore', { model: sub_model }),
plugins: [
//Ext.create('Ext.grid.plugin.RowEditing', { // 會出現[Update][Cancel]鈕
Ext.create('Ext.grid.plugin.CellEditing', { // 不會出現[Update][Cancel]鈕, 直接編輯
clicksToEdit: 1 // 按一下進行編輯,預設為按兩下
})],
});
2>> columns:
var sub_Columns = [
{ header: "", xtype: "rownumberer", width: 40, align: "center", sortable: false },
{
header: "需求工時", dataIndex: "RQHR", width: 70, sortable: false, align: "right",
TMType: "float", renderer: Ext.util.Format.numberRenderer('0,000.00'),
editor: { xtype: 'textfield', allowBlank: false}, //不允許空白
//editor: 'textfield',
},
2024年4月8日 星期一
V20304A - 工時提列 – get_cmp_xxxx – 子畫面 Grid – data load
目的: V20304A - 工時提列 – get_cmp_xxxx –子畫面 Grid – data load
處理說明: 1>版面設計 - layout : 'border' ,
--> region : 'north' , height: 150,
--> region : 'north' , height: 150,
--> region : 'center
2>輸入欄位 : get_cmp_txt1
var cmp_sub_IRESAK = get_cmp_txt1('檢測結果', 'sub_IRESAK', 110, 20);
var cmp_sub_IRESAK_ = get_cmp_cal0('sub_IRESAK_', 135);
var cmp_sub_pick_IRESAK = get_pick_btn0('挑選檢測結果', 'sub_btn_IRESAK',
'../api/V20304AAPI/get_sub_IRESAKPick?isComplete=0',
['IRESAK', 'DESCPT'], ['sub_IRESAK','sub_IRESAK_'],
J_models_sub_IRESAK, J_columns_sub_IRESAK);
cmp_sub_IRESAK.items.push(cmp_sub_IRESAK_, cmp_sub_pick_IRESAK);
1>*.js
var cmp_sub_RRNRAR = get_cmp_dt1('TLS實際拆檢完工日', 'sub_RRNRAR', 110, 145);
var cmp_sub_QDEP = get_cmp_txt1('品保單位', 'sub_QDEP', 110, 160);
var cmp_sub_pick_QDEP = get_pick_btn0('挑選品保單位', 'sub_btn_QDEP',
'../api/V20304AAPI/get_sub_QDEPPick?isComplete=0',
['QDEP'], ['sub_QDEP'], J_models_sub_QDEP, J_columns_sub_QDEP);
cmp_sub_QDEP.items.push(cmp_sub_pick_QDEP);
var cmp_sub_IRESAK = get_cmp_txt1('檢測結果', 'sub_IRESAK', 110, 20);
var cmp_sub_IRESAK_ = get_cmp_cal0('sub_IRESAK_', 135);
var cmp_sub_pick_IRESAK = get_pick_btn0('挑選檢測結果', 'sub_btn_IRESAK',
'../api/V20304AAPI/get_sub_IRESAKPick?isComplete=0',
['IRESAK', 'DESCPT'], ['sub_IRESAK','sub_IRESAK_'], J_models_sub_IRESAK, J_columns_sub_IRESAK);
cmp_sub_IRESAK.items.push(cmp_sub_IRESAK_, cmp_sub_pick_IRESAK);
var cmp_sub_NOTEAR = get_cmp_txtarea1('檢測結果說明', 'sub_NOTEAR', 110, 185,5);
//cmp_sub_NOTEAR.setHeight(100);
var win1 = getMyWindow("工時提列", sub_V20304A_Flds, sub_V20304A_Btns, "A");
win1.x = 100;
win1.setWidth(900);
win1.setHeight(400);
var np = {};
np["sub_FMNO"] = par_rec.data['FMNO'].toString();
Ext.getCmp('sub_Grid').store.getProxy().url = '../../api/V20304AAPI/get_sub_data1',
Ext.getCmp('sub_Grid').store.getProxy().extraParams = np;
Ext.getCmp('sub_Grid').store.load();
V20304A – 欄位值轉成字串 - *.js - null.toString() 會錯誤 - 用 nulltoStr() - null.lengh 也會 Error
目的: V20304A – 欄位值轉成字串 - *.js
處理說明: 1> null.toString() 會錯誤
row[prop.Name] = prop.Value?.ToString(); --> 安全地將 null 轉成字串
If prop.Value
is not null, it calls ToString()
; otherwise, it returns null
.
2> 利用 myfunc.js nulltoStr(par_Fld) , 將欄位值轉成 String
1>*.js
Ext.getCmp("sub_RPNOAF").setValue(nulltoStr(par_rec.data['RPNOAF']));
Ext.getCmp("sub_AMMNO").setValue(nulltoStr(par_rec.data['AMMNO']));
Tmp_NEMPID = cur_rec.data['NEMPID'].toString(); //若欄位值為null, 則 .ToString() 會 Error
--> Tmp_NEMPID = nulltoStr(cur_rec.data['NEMPID']); //拆檢專案人員
--> Tmp_NEMPID = nulltoStr(cur_rec.data['NEMPID']); //拆檢專案人員
V20304A – 子畫面 - 版面配置 - border - region - textarea V20302B- splitter - 調整版面 panel 的大小
目的: V20304A – 子畫面 - 版面配置 - border - textarea - V20302B(Splitter)
處理說明: 1>region: [north],[center] , north 必需設定高度2>region: [east],[center], east 必需設定寬度
3>textarea 設定高度 , Ext.getCmp('sub_notearea').setHeight(50) ;
4>splitter - 調整版面 Panel 大小
訂閱:
文章 (Atom)