2023年7月17日 星期一

V120102 - 分頁勾選 - 保留分頁勾選的資料 - 雅嵐 -2 - each - forEach

 目的: V120102 - 分頁勾選  - 保留分頁勾選的資料 - 雅嵐_2

處理說明: 1> *_JSON.js , 定義 PK_LIST 儲存 PK
                        CHK_PK_OBJ.PKLIST     : 記錄目前勾選的 PK 字串
                  2>[全部選取] : 將資料的 PK 存入 CHK_PK_OBJ.PKLIST                      
                  3>[全部取消] : 將CHK_PK_OBJ.PKLIST清空
                  4>Column ["CHECK"] . renderer 時, 
                       1>>若目前資料為勾選(rec.get("CHECK")=true) :
                              若目前資料 PK 未存 在  CHK_PK_OBJ.PKLIST , 則加入本資料. PK
                       2>>若目前資料為未勾選(rec.get("CHECK")=false) :
                              將PK 從 CHK_PK_OBJ.PKLIST 移除
                            CHK_PK_OBJ.PK_LIST = jQuery.grep(CHK_PK_OBJ.PK_LIST, function (value) {
                                                       return value != item;
});
                 5> *.cs 若按[全部選取]鈕(par_paging==false),本頁已顯示計算欄位,
                      --> 不需計算欄位, 加快顯示速度
                       if (par_paging == false)
                         {  return ds;     }
 



   1>V120101_JSON.js

//2023/07/14 microed , 將 V120201 改成 雅嵐版本 - 分頁勾選
Ext.define('CHK_PK_OBJ', {  PK_LIST: [],            //儲存 PK_LIST  });
var CHK_PK_OBJ = Ext.create('CHK_PK_OBJ');

var J_columns = [
{ header: "", xtype: "rownumberer", width: 50, align: "center", sortable: false },
{
//2023/07/14 microed , 將 V120201 改成 雅嵐版本 - 分頁勾選
header: "勾選",
dataIndex: "CHECK", width: 40, xtype: 'checkcolumn', menuDisabled: true, sortable: false,
//rec : 目前資料欄位值
renderer: function (value, metadata, rec, rowIndex, colIndex, store) {
//var item = record.get('PROM_ID') + '&' + record.get('CR_NO') + '&' + record.get('ITEM_NO');
var item = rec.get('BITM');  //PK
var chkd = '';
if (rec.get('CHECK') === true) {
if (CHK_PK_OBJ.PK_LIST.indexOf(item) == -1) {
CHK_PK_OBJ.PK_LIST.push(item);
}
chkd = 'checked';
rec.set('CHECK', true);
}
else if (rec.get('CHECK') === false) {
rec.set('CHECK', false);
//將本item ,由 Array 中移除
CHK_PK_OBJ.PK_LIST = jQuery.grep(CHK_PK_OBJ.PK_LIST, function (value) {
return value != item;
});
}
else if (typeof rec.get('CHECK') === "undefined") { //往上或下一頁
if (CHK_PK_OBJ.PK_LIST.indexOf(item) > -1) {
chkd = 'checked';
if (CHK_PK_OBJ.PK_LIST.indexOf(item) == -1) {
CHK_PK_OBJ.PK_LIST.push(item);
}
rec.set('CHECK', true);
} else {
rec.set('CHECK', false);
}
}
var cbx = "<input  type='checkbox'  "
+ chkd + " > ";
return cbx;
},
},


2>V120102.js
//按鈕 : [批次新增][下載匯入格式]
    var BtnAry = [        
        { //2023/07/14 microed , 將 V120201 改成 雅嵐版本 - 分頁勾選
            xtype: 'button', text: '全部選取', id: 'SelAllBtn', iconCls: 'icon-check',
            listeners: {
                click: function () {
                    Ext.getCmp('grid_Single').store.each(function (rec) {
                        rec.set('CHECK', true);
                    }); 
//將 所有資料.PK 加入 CHK_PK_OBJ.PK_LIST
                    Ext.Ajax.request({
                        url: '../api/V120102API/getGridData_M?par_paging=false',
                        method: 'POST',
                        params: { all: 1 },
                        async: false, //將非同步功能關閉
                        failure: function (response, opts) {
                        },
                        success: function (response, opts) {
                            CHK_PK_OBJ.PK_LIST = [];
                            var obj = Ext.decode(response.responseText);
                            obj.T1.forEach(function (item, i) {
                                CHK_PK_OBJ.PK_LIST.push(item['BITM']);
                            });
                        }
                    });
                }
            }
        }, //end of 全部選取
 {
            xtype: 'button', text: '全部取消', id: 'unSelAllBtn', iconCls: 'icon-check',
            listeners: {
                click: function () {
                    //unSelAllBtn_click();                    
                    Ext.getCmp('grid_Single').store.each(function (rec) {
                        rec.set('CHECK', false);
                    });
                    CHK_PK_OBJ.PK_LIST = [];
                }
            }
        }, //end of 全部取消

沒有留言:

張貼留言