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

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();