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 : 欄位設為可編輯  
                         editor: 'textfield',
                         另一方式: 
                         editor: { xtype: 'textfield', allowBlank: false}, //不允許空白

                   

1>*.js
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 – DBGrid –設定[唯讀] & [編輯]欄位

 目的: V20304A – DBGrid –設定[唯讀] & [編輯]欄位

處理說明:  





V20304A - 工時提列 – get_cmp_xxxx – 子畫面 Grid – data load

 目的: V20304A -  工時提列 – get_cmp_xxxx –子畫面 Grid – data load

處理說明: 1>版面設計 - layout : 'border' , 
                                       -->  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() 會錯誤

                  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']);  //拆檢專案人員

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 大小
                       { xtype: 'splitter',  width: 2,   },




2024年4月2日 星期二

jQuery.grep() 用法

 目的:   jQuery.grep() 用法

處理說明:1>grep可以在陣列中逐一尋找並篩選出符合條件的內容,
                        該方法會返回一個新的陣列。

                    2> jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] )

範例1:從陣列中移除 9 的 item
           var arr = [ 1, 9, 4, 7, 3, 8, 6, 9, 1 ]; //找出數值不等於9的資料 
           arr = jQuery.grep(arr, function( item ) 
                    { return item !== 9; });
           結果  :
                        [1, 4, 7, 3, 8, 6, 1]

範例2: 從陣列中移除 PK 的 item
            CHK_PK_OBJ.PK_LIST = jQuery.grep(CHK_PK_OBJ.PK_LIST, function (item) {
return item != Tmp_PK;
});