顯示具有 刪除 標籤的文章。 顯示所有文章
顯示具有 刪除 標籤的文章。 顯示所有文章

2023年8月30日 星期三

V120401 - 取得目前資料的欄位值 – [刪除] – 更新單況 - SelectionModel() -cur_rec - cur_recs

 目的: V120401 – [刪除] – 更新單況

處理說明: 1>


1>*.js
//刪除 - 資料庫刪除資料
    Ext.getCmp('btn_del').afterDel = function () {
        var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
        var cur_rec = cur_recs[0];
        var Tmp_TMNO = cur_rec.data['TMNO'].toString();
        var Tmp_result = S_DB.afterDel();  // 執行後端  Delete 程式
        if (Tmp_result) {
            var Tmp_Str = "條碼編號(" + Tmp_TMNO + ")的管制現況已改為 Z:已刪除";
            mysuccessalert(Tmp_Str);            
        }

        return Tmp_result;        
    };


2>*.cs
[HttpPost]
        public void Delete()
        {
            var c = System.Web.HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            //string[] arrCondition = new string[] { "" };
            //getPK(): 取得本Table 的 PK (AMM_TMDWG.TMNO)
            string[] arrCondition = getPK();
            //nvc : 傳入目前資料的欄位值
            //excuteDelete(nvc, DBTable, arrCondition);
            string Tmp_TMNO = nvc["TMNO"];
            string Tmp_Sql = "  UPDATE   AMM_TMDWG  "
                                       + "  SET           STAT='Z'   "
                                       + "  WHERE    TMNO=" + myfunc.AA(Tmp_TMNO);
            myfunc.SqlExec(Tmp_Sql);
        }



2022年10月26日 星期三

V20107 – [刪除]鈕, 除刪除主檔外, 連明細檔一起刪除 or [刪除]鈕, 只刪除主檔, 顯示訊息 " 明細檔必需先刪除,才可刪主檔

目的: V20107 – [刪除]鈕, 除刪除主檔外, 連明細檔一起刪除   (Default)

           or  [刪除]鈕,  只刪除主檔, 顯示訊息 " 明細檔必需先刪除,才可刪主檔

處理說明: 1> [刪除]鈕, 除刪除主檔外, 連明細檔一起刪除   (Default)

                  2>  [刪除]鈕,  只刪除主檔, 顯示訊息 " 明細檔必需先刪除,才可刪主檔


1>*.js
  1>> [刪除]鈕, 除刪除主檔外, 連明細檔一起刪除   (Default)
          不需額外處理

  2>> [刪除]鈕, 只刪除主檔外, 若仍有明細檔,則不允許刪除
        Ext.getCmp("btn_del").delMessage = "確定要刪除本筆工作程序主檔嗎 ?<br>"
                                                                   + "請先刪除子步序資料,才可刪除主檔資料<br> ";


    //主檔.[刪除]前,先判斷子Table 是否有資料,
    //若有的顯示訊息,請先刪除子Table資枓
    Ext.getCmp("btn_del").beforeDel = function () {
        var Tmp_grid_D1 = Ext.getCmp("grid_D1");
        var Tmp_grid_D = Ext.getCmp("grid_D");
        var Tmp_Str = "";
        if (!checkisnull(Tmp_grid_D1) && !checkisnull(Tmp_grid_D)) {
            if ((Tmp_grid_D1.store.getCount() > 0) || (Tmp_grid_D.store.getCount() > 0)) {
                Tmp_Str = "主工作程序還有明細資料(子步序), 不可刪除主工作程序資料<br>"
                    + "請先刪除主工作程序明細資料(步序說明/子步序說明)<br>"
                    + "才可刪除主工作程序資料";
                mywarnalert(Tmp_Str);
                return false;
            }
        }
    }



2>*.cs
  1>> [刪除]鈕, 除刪除主檔外, 連明細檔一起刪除   (Default)
       [HttpPost]
        public void Delete()
        {
            var c = System.Web.HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            string[] arrCondition;
            //string[] arrCondition = getPK("AMM_WKSTPDD"); //需修改成指定的key
             //除刪除主檔外, 連明細檔一起刪除   (Default)
            arrCondition = getPK("AMM_WKSTP"); //需修改成指定的key
            excuteDelete(nvc, "AMM_WKSTPDD", arrCondition);

            //arrCondition = getPK("AMM_WKSTPD"); //需修改成指定的key
            arrCondition = getPK("AMM_WKSTP"); //需修改成指定的key
            excuteDelete(nvc, "AMM_WKSTPD", arrCondition);

            arrCondition = getPK();
            excuteDelete(nvc, DBTable, arrCondition);
        }

      2>> [刪除]鈕, 只刪除主檔外, 若仍有明細檔,則不允許刪除
        [HttpPost]
        public void Delete()
        {
            var c = System.Web.HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            string[] arrCondition;          

            arrCondition = getPK();
            excuteDelete(nvc, DBTable, arrCondition);
        }

2022年10月17日 星期一

V20107 - MDD - 刪除主檔/明細檔/子明細檔處理

 目的: V20107 - Master-Detail-Detail(MDD) - 刪除主檔/明細檔/子明細檔處理

處理說明: 1> //主檔.[刪除]前,先判斷子Table 是否有資料,若有的顯示訊息,請先刪除子Table資枓
                       Ext.getCmp("btn_del").beforeDel = function () {
                             var Tmp_grid_D1 = Ext.getCmp("grid_D1");
                             var Tmp_grid_D = Ext.getCmp("grid_D");
                             var Tmp_Str = "";
                            if (!checkisnull(Tmp_grid_D1) && !checkisnull(Tmp_grid_D)) {
                                 if ((Tmp_grid_D1.store.getCount() > 0) || (Tmp_grid_D.store.getCount() > 0)) {
                            Tmp_Str = "主工作程序還有明細資料(子步序), 不可刪除主工作程序資料<br>"
                                           + "請先刪除主工作程序明細資料(步序說明/子步序說明)<br>"
                                           + "才可刪除主工作程序資料";
                                            mywarnalert(Tmp_Str);
                                     return false;
                         }}}

                    2>明細檔.[刪除]前,先判斷子 Table 是否有資料
                         Ext.getCmp("grid_D").beforeDel = function () {
                         var Tmp_grid_D1 = Ext.getCmp("grid_D1");        
                         var Tmp_Str = "";
                         if (!checkisnull(Tmp_grid_D1) ) {
                         if (Tmp_grid_D1.store.getCount() > 0) {
                          Tmp_Str = "工作步序說明還有明細資料(子步序), 不可刪除步序說明資料<br>"
                                         + "請先刪除工作步序明細資料(子步序說明)<br>"
                                         + "才可刪除工作步序明細資料";
                           mywarnalert(Tmp_Str);
                           return false;
            }        }    }


1>*.js  主檔.[刪除]

                      //主檔.[刪除]前,先判斷子Table 是否有資料,若有的顯示訊息,請先刪除子Table資枓
                       Ext.getCmp("btn_del").beforeDel = function () {
                             var Tmp_grid_D1 = Ext.getCmp("grid_D1");
                             var Tmp_grid_D = Ext.getCmp("grid_D");
                             var Tmp_Str = "";
                            if (!checkisnull(Tmp_grid_D1) && !checkisnull(Tmp_grid_D)) {
                                 if ((Tmp_grid_D1.store.getCount() > 0) || (Tmp_grid_D.store.getCount() > 0)) {
                            Tmp_Str = "主工作程序還有明細資料(子步序), 不可刪除主工作程序資料<br>"
                                           + "請先刪除主工作程序明細資料(步序說明/子步序說明)<br>"
                                           + "才可刪除主工作程序資料";
                                            mywarnalert(Tmp_Str);
                                     return false;
                         }}}

2>Detail檔.[刪除]


    //主檔.[刪除]前,先判斷子Table 是否有資料,
    //若有的顯示訊息,請先刪除子Table資枓
    Ext.getCmp("grid_D").beforeDel = function () {
        var Tmp_grid_D1 = Ext.getCmp("grid_D1");        
        var Tmp_Str = "";
        if (!checkisnull(Tmp_grid_D1) ) {
            if (Tmp_grid_D1.store.getCount() > 0) {
                Tmp_Str = "工作步序說明還有明細資料(子步序), 不可刪除步序說明資料<br>"
                    + "請先刪除工作步序明細資料(子步序說明)<br>"
                    + "才可刪除工作步序明細資料";
                mywarnalert(Tmp_Str);
                return false;
            }
        }
    }

2022年9月21日 星期三

V20301 – [刪除]鈕, - checkboxModel -刪除勾選的多筆資料 - 覆蓋原本event的處理 - 移除目前 store 資料

 目的:  [刪除]鈕,  -刪除勾選的多筆資料 - checkboxModel 

處理說明:  1>將 grid_Single 換成 checkboxModel class

                   2> 重寫 btn_del.onclick 處理 , 即  beforedel() 傳回 false, 不處理 parent.del 函式

                   3> 依勾選的資料, 一筆一筆從資料庫刪除 , 資料庫刪除後, 再刪除畫面的資料


1>*.js
 1>>置換成 CheckboxModel  class
    //加入 checkbox Model 
    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();

 2>>重寫 btn_del.onclick 處理 , 即  beforedel() 傳回 false, 不處理 parent.del 函式

//20220922  覆蓋原本的 [刪除]鈕 處理,  自行處理
    //不執行 paretn.delete , beforeDel 傳回 false
    Ext.getCmp('btn_del').beforeDel = function () {
        return false;
    }

    var buttonModel = Ext.create('G_buttonModel');   //取得 目前的畫面狀態(1,2,3 : 新增/編輯/瀏覽)

    Ext.getCmp("btn_del").on('click', function (me,e,eOpts) {    
      //已置換 grid_store , 不需 .getView().
     //var cur_recs = Ext.getCmp('grid_Single').getView().getSelectionModel().getSelection(); 
        var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
        var cur_rec;
        if (cur_recs.length == 0)
        {
            buttonModel.modelType = 0;
            mywarnalert('請先勾選要刪除的資料!!');
        }
        else {
            me.delMessage = "確定刪除勾選的資料嗎?";
            Ext.Msg.confirm('提醒', me.delMessage, callBackFunc);
            function callBackFunc(id) {
                if (id == 'yes') {
                    console.log("cur_recs.length:", cur_recs.length);
                    var gridstore = Ext.getCmp('grid_Single').store;                        
                    for (let i = 0; i <= cur_recs.length - 1; i++) {
                        console.log("i:", i);
           Ext.getCmp('grid_Single').getSelectionModel().select(cur_recs[i]); //grid select指向所選的資料
                        if (Ext.getCmp('btn_del').afterDel() == false) {
                            return;
                        }                                                
                    } //  end of for (let i=0,)
                    //資料庫均刪除完成後, 才由 gridstore 移除資料
                    for (let i = 0; i <= cur_recs.length - 1; i++) {
                        gridstore.remove(cur_recs[i]); //畫面上隱藏刪除列                     
                    } //  end of for (let i=0,)
                    Ext.getCmp('grid_Single').getView().refresh();
                    buttonModel.modelType = 0;
                }  // end    if (id == 'yes')             
            }  // end of callbackfunc
        }  //else { of if length>0            
    } ) // end of click function 

2022年8月9日 星期二

V120402 - 新增/修改/刪除.Disabled 及 新增按鈕 - Detail畫面處理

 目的: 在畫面[新增]/[修改]/[刪除]按鈕Disabled , 並新增其他 [按鈕]

處理說明: 1>將在畫面[新增]/[修改]/[刪除]按鈕Disabled
                  2>Detail畫面新增[按鈕]
                  3>開啟 Detail 資料


1>將在畫面[新增]/[修改]/[刪除]按鈕Disabled 

//新增 , 查詢畫面, 無新增/修改/刪除/..
    Ext.getCmp('btn_add').setDisabled(false);   //[新增]鈕設為 Disabled
    Ext.getCmp('btn_add').setVisible(false);      //[新增]鈕設為 隱藏
    Ext.getCmp('btn_edit').setVisible(false);
    Ext.getCmp('btn_del').setVisible(false);


2>Detail畫面新增[按鈕]
//按鈕 : [借閱登記] [歸還登記][續借登記][查詢借閱記錄][報表]
    var BtnAry = [
        {
            xtype: 'button', text: '借閱登記', id: 'LendBtn',
            listeners: {
                click: function () {
                    //RollPrnBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '歸還登記', id: 'BackBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '續借登記', id: 'ContBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '查詢借閱記錄', id: 'LookBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '報表', id: 'RtnBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },

    ];

    //於單檔下方新增 Button
    Ext.getCmp('grid_D').insertBtn(BtnAry);

3>開啟 Detail 資料
 public dynamic getGridData_D()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            OracleCommand cmd = new OracleCommand();
            string TMNO = nvc["TMNO"];
            string csSQL = " AND TMNO = :TMNO ";
            cmd.CommandText = csSQL;
            cmd.Parameters.Add(":TMNO", TMNO);
            setDBTable("AMM_TMDWGD");
            DataSet ds = getGridDataPage(cmd);

            return ds;
        }

2022年7月18日 星期一

Web V120502 - store 刪除資料

 


  var Tmp_sub_Grid = Ext.getCmp('sub_Grid');
                                    console.log("Tmp_sub_Grid:", Tmp_sub_Grid);
                                    var cur_recs;
                                    var cur_rec;
                                    cur_recs = Tmp_sub_Grid.selModel.getSelection();
                                    if (cur_recs.length == 0) {
                                        mywarnalert("請先選擇要刪除的資料");
                                        return;
                                    }
                                    else {
                                        cur_rec = cur_recs[0];
                                        console.log("cur_rec:", cur_rec);
                                        console.log("Tmp_sub_Grid.store:", Tmp_sub_Grid.store);
                                        Tmp_sub_Grid.store.remove(cur_rec);
                                        mysuccessalert("刪除資料完成 !!");
                                        return;
                                    }