2023年11月20日 星期一

V80E01 - Runtime 新增欄位 - 依 SQL 資料(N筆) 新增 Grid 顯示欄位

 目的: V80E01 - 依 SQL 資料(N筆) 新增 Grid 顯示欄位

處理說明: 1> 欄位名稱 [SQL 資料(N筆)] 透過 Cookie 由後端傳至前端

                  2> Grid 的 model 及 column 必需重新設定

                       Ext.define('GridModel1', {
                                    extend: 'Ext.data.Model',
                                    fields: J_gridmodel
                                });
                       Ext.getCmp('grid_Single').store.getProxy().setModel(GridModel1, true);
                       Ext.getCmp('grid_Single').reconfigure(Ext.getCmp('grid_Single').store, J_columns);

                       Ext.getCmp('grid_Single').reloadGridData(); 



1>*.js
 items: [
                    {
                        xtype: 'button',
                        id: 'btn_Show',
                        flex: 5,
                        border: 1,
                        text: '資料顯示',
                        iconCls: 'icon-search',
                        handler: function () {
                            var Tmp_PITM = Ext.getCmp("s_PITM").getValue();
                            if (checkisnull(Tmp_PITM)) {
                                var Tmp_Str = "[受訓專業]過濾條件不可空白<br>"
                                                         + "請先輸入!!";
                                mywarnalert(Tmp_Str);
                                return;
                            }                           
                            var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞                                                                                                               
                            gridstore.getProxy().url = '../api/V80E01API/getGridData_M';
                            gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK                            
                            Ext.getCmp('grid_Single').store.pageSize = 30;
                            Ext.getCmp('grid_Single').reloadGridData();    
                            Ext.getCmp('grid_Single').store.on('load', function (me, records, successful, operation, eOpts) {
                                settrue("grid_Single");
                            })
                            waittrue("grid_Single", AddFields);
                            function AddFields() {                                
                                //讀取 新增的欄位s字串 ["COSCStr"]
                                var Tmp_COSCStr = r_cookies('COSCStr');
                                //console.log("r_cookies=", r);
                                if (!checkisnull(Tmp_COSCStr)) {
                                    //先恢愎至原本的欄位 Array - J_gridmodel (7筆)  &  J_columns(8筆) , 
                                    //以免每按[顯示資料], COSC欄位一直累加
                                    while (J_gridmodel.length > 7) 
                                        J_gridmodel.pop();
                                    while (J_columns.length > 8)
                                        J_columns.pop();
                                    var Tmp_COSC_Ary = Tmp_COSCStr.split(',');
                                    var Tmp_cur_COSC = "";
                                    var Tmp_COSC_Obj = {};
                                    var Tmp_COSC_Obj1 = {};
                                    for (var i = 0; i < Tmp_COSC_Ary.length; i++) {
                                        Tmp_cur_COSC = Tmp_COSC_Ary[i];
                                        //var J_gridmodel = [
                                        //    { name: "EMPLYID" },
                                        //    { name: "EMPLYNM" },
                                        //    ]
                                        //將 Tmp_cur_COSC 加入 J_gridmodel
                                        Tmp_COSC_Obj = { name: Tmp_cur_COSC };
                                        J_gridmodel.push(Tmp_COSC_Obj);
                                        Tmp_COSC_Obj1 = { header: Tmp_cur_COSC, dataIndex: Tmp_cur_COSC, width: 60, TMType: "string" };
                                        J_columns.push(Tmp_COSC_Obj1);
                                    }
                                    console.log("J_gridmodel:", J_gridmodel);
                                    console.log("J_columns:", J_columns);
                                }
                                //Ext.getCmp('grid_Single').getView().refresh();
                                //重設 store 的 model & columns
                           Ext.define('GridModel1', {
                                    extend: 'Ext.data.Model',
                                    fields: J_gridmodel
                                });
                           Ext.getCmp('grid_Single').store.getProxy().setModel(GridModel1, true);
                           Ext.getCmp('grid_Single').reconfigure(Ext.getCmp('grid_Single').store, J_columns);
                           Ext.getCmp('grid_Single').reloadGridData();

                            }  // end of AddFields
                        }
                    },  // end of 顯示資料







沒有留言:

張貼留言