顯示具有 un 標籤的文章。 顯示所有文章
顯示具有 un 標籤的文章。 顯示所有文章

2022年9月21日 星期三

V20301 – [刪除]鈕, 覆蓋原本 parent.[刪除]鈕的處理,

 目的: 覆蓋原本 parent class  event 的處理, Ex: [刪除]鈕, 覆蓋原本 parent.[刪除]鈕的處理

處理說明: 
     1>方法1:
          1>>btn_del 的 parent 函式中, 有一 beforeDel() 函式傳回 true 時, 才會往下執行
                所以將  beforeDel() 函式 傳回 false , 則不會往下執行, 即不執行 parent.btn_del 處理
    
     2>方法2:           
           1>>利用 元件.un("event名稱", event handler) , 解除 parent 的 event handler
           2>>重新 元件.on("event名稱", function (){})  ;
        


1>*.js

1>>方法1: 利用 parent.beforeDel 函式 , 傳回 false , 不會執行原本 parent.del處理

    Ext.getCmp('btn_del').beforeDel = function () {
        return false;
    }

    Ext.getCmp("btn_del").on('click', function () {
        mysuccessalert("btn_del click");
    });
    

2>>方法2:  利用 元件.un("event名稱", event handler) , 解除 parent 的 event handler  

    Ext.getCmp('btn_del').un("click", Ext.getCmp('btn_del').events.click.listeners[0].fn);
    console.log("2 after un Ext.getCmp('btn_del') : ", Ext.getCmp('btn_del'));    
    console.log("1 Ext.getCmp('btn_del') : ", Ext.getCmp('btn_del'));
 console.log("1 before   Ext.getCmp('btn_del').events.click.listeners[0].fn : ", Ext.getCmp('btn_del').events.click.listeners[0].fn);
    Ext.getCmp("btn_del").on('click', function () {
        mysuccessalert("btn_del click");
    });




2022年9月2日 星期五

V20306 - 若Template Grid畫面有 CheckBoxModel ,則判斷選擇資料會錯誤 - 移除 parent.onclick function -改用自定的 onclick

       目的: 若Grid畫面有 CheckBoxModel ,則判斷選擇資料會錯誤 , 

                 已勾選資料,但編輯時,仍會顯示"請先選擇一筆資料!! "

                  --> Template 的錯誤, 更  TMGrid.js  & TMSingleViewEdit.js 即可

處理說明: 方法1>將 parent 的 onclick 解除  Listener 

                              不呼叫 parent.onclick function , 只呼叫 child.onclick function

                              V20306 繼承自 TMSingleViewEdit class,  onClick時,會先呼叫 parent .onClick

                             (因 constructor: function (config){ ...   ;  this.callParent(config);}    ) 

                  方法2>置換 V20306.grid_Single 元件,將 grid.SelModel 改成 checkboxModel 





1>方法一:   *.js   移除 parent .onclick function  - 改用自定的 onclick   

//兩種方法均可  - un("click",handlerFn)   - removeEventListener("click", handlerFn);
Ext.getCmp('btn_edit').un("click", Ext.getCmp('btn_edit').events.click.listeners[0].fn);
//Ext.getCmp('btn_edit').removeEventListener("click", Ext.getCmp('btn_edit').events.click.listeners[0].fn);        

Ext.getCmp('btn_edit').on("click", function (me, e, eOpts) {
        var sel_recs = Ext.getCmp('grid_Single').getView().getSelectionModel().getSelection();
if (sel_recs.length > 0) {
var sel_rec = sel_recs[0];
            setFormData(sel_recs);
            buttonModel.setModelType(2);
            Ext.getCmp("tab2").setDisabled(true);                              
            Ext.getCmp("TMSingleViewEdit").setActiveTab("tab1");
}
 else {
            mywarnalert("請先選擇一筆資料 !!");
        }

        setFieldsCls('myform', ['ASPNO', 'LCNO', 'MCNM', 'ORDID', 'PCTP', 'FICNMA', 'STLCT', 'PCQTY', 'LRULT', 'LRUWT', 'LRUHG'], ['ASPNO'],['ASPNO','RPNOAF','LCNO','LRWET','MCNM','ASPSTA','ORDID','PCTP','FICNMA','STLCT','PCQTY','ASLV','ASPRMK','NGONOAF','PN','LCITM','LCETDT','LCCHID','LCORAO','LRULT','LRUWT','LRUHG','WTLV','ITPR']);
        showFormButton('myform', ['btn_RPNOAF', 'btn_LRWET', 'btn_MCNM', 'btn_ASPSTA', 'btn_ORDID', 'btn_PCTP', 'btn_FICNMA', 'btn_STLCT', 'btn_ASPRMK', 'btn_NGONOAF', 'btn_PN', 'btn_LCCHID']);
        return false;
    });


方法2:  置換 selModel 成  Ext.selection.CheckboxModel
              另外Template   TMGrid.js  & TMSingleViewEdit.js   也要換成最新版本

Ext.onReady(function () {
    var TMSingleViewEdit = Ext.create('TMSingleViewEdit');
    
    Ext.getCmp('grid_Single').destroy(); //20220905
    var grid_Single = Ext.create('grid_Single', {
        id: 'grid_Single',
        resizable: true,
        selModel: Ext.create('Ext.selection.CheckboxModel', {
            selectionMode: 'SIMPLE',
            listeners: {
                /*selectionchange: function (cb, selected, eOpts) {
                    //view.selModel.getSelection()
                },*/
                RowMouseDown: function (view, record, item, index, e) {
                    var me = this;
                    if (index !== -1) {

                        if (!me.allowRightMouseSelection(e)) {
                            return;
                        }

                        if (e.shiftKey && me.lastFocused) {
                            me.selectRange(me.lastFocused, record, e.ctrlKey);
                            me.processSelection(view, record, item, index, e);
                        }

                        if (!me.isSelected(record)) {
                            me.mousedownAction = true;
                            me.processSelection(view, record, item, index, e);
                        } else {
                            me.mousedownAction = false;
                        }
                    }

                }
            }
        })
    });
    Ext.getCmp('tab2').add(grid_Single); //將grid加入到tab裡面
    Ext.getCmp('tab2').updateLayout();