顯示具有 新增 標籤的文章。 顯示所有文章
顯示具有 新增 標籤的文章。 顯示所有文章

2023年9月6日 星期三

V120602 – [新增]鈕–項次=MAX+1 –[存檔]鈕 – nvc1,nvc1[ITM]=get_NEXT_ITM();

 目的: V120602 –  [新增]項次=MAX+1 –[存檔] – nvc1,nvc1[ITM]=get_NEXT_ITM();

處理說明: 1>[新增]鈕 - 設定必填/唯讀/計算欄位 , setFieldsCls()
                  2>前端欄位預設值: Ext.getCmp("STAT").setValue("A"); 
                                                     Ext.getCmp("STAT_").setValue("未結案");
                  3>[存檔]鈕 - 項次=max(項次)+1



1>*.js
 //新增
    Ext.getCmp('btn_add').on("click", function () {
        setFieldsCls('myform', 
         ['ITM', 'ACNO', 'DEPID', 'QDRNO', 'CURP'], ['ITM', 'UPPER', 'UPDT', 'STAT'], 
['ITM', 'ACNO', 'DEPID', 'QDRNO', 'REVDT', 'CURDEP', 'CURP', 'REFNO', 'DIRNO', 'REL_DIR_NO', 'WKD', 'PCMPDT', 'STATDCPTN', 'DFDCPTN', 'STAT', 'UPPER', 'CAU']);
        Ext.getCmp("STAT").setValue("A");
        Ext.getCmp("STAT_").setValue("未結案");
        is_add = true;
    });

2>*.cs
[HttpPost]
        public void Insert()
        {
            var c = System.Web.HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            NameValueCollection nvc1 = new NameValueCollection();
            foreach (string k in nvc.Keys)
            {
                nvc1[k] = nvc[k];
            }            
            nvc1["ITM"] = GET_NEXT_ITMNO();
            nvc1["UPPER"] = LoginUserModel.LoginUserId;
            nvc1["UPDT"] = DateTime.Now.ToString("yyyy/MM/dd");
            excuteInsert(nvc1, DBTable);          
        }

 //取得  AMM_QDR.ITM  最大值
        [HttpPost]
        public string GET_NEXT_ITMNO()
        {
            string Tmp_Sql;         
            Int32 Tmp_MAX_ITMNO, Tmp_NEXT_ITMNO;
            string Tmp_NEXT_ITMNO_Str;
            Tmp_Sql = " SELECT  MAX(CAST(ITM as integer ))  "
                            +"  FROM   AMM_QDR   " ;
            Tmp_MAX_ITMNO = int.Parse(myfunc.SqlValue(Tmp_Sql));
            if (myfunc.checkisnull(Tmp_MAX_ITMNO.ToString()))
            {
                Tmp_NEXT_ITMNO = 1;
            }
            else
            {                
                Tmp_NEXT_ITMNO = Tmp_MAX_ITMNO+1;
            };
            Tmp_NEXT_ITMNO_Str = Tmp_NEXT_ITMNO.ToString();
            return Tmp_NEXT_ITMNO_Str;
        }



2023年4月26日 星期三

V20302 - 單檔維護 - 新建畫面 - 新增

目的: V20302 - 單檔維護 - 新建畫面

處理步驟:  1>利用小工具 - 產生欄位_單檔 -->產生 V20302 的相關欄位資料
                       (V20302.js V20302_JSON.js , 
                         V20302APIController.cs)
                        [Query.欄位s(J_gridmodel),
                         Grid.欄位s(J_columns), 
                         編輯畫面欄位(J_formFields)]
                   2>將檔案加入 Project  , 並試 Run, 可以顯示資料
                   3>編輯[過濾條件(Query)] 加入, 並執行




PS : 若用現有檔案(V80C03)修改, 則需修改 Table 的相關欄位資料, 很花時間
        除非兩檔案的 Table 相同, 


  

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年8月2日 星期二

Question: V120103 - [新增] --> [存檔]資料後, 重新儲存資料, 並 Focus 在該目前編輯的資料

目的: Grid [新增] --> [存檔]資料後, Locate 至原本的新增的那筆資料

處理說明: 1> Grid 有分頁處理, 若新增的那筆資料, 位置在其他頁,要如何處理
                  2> store 要 如何 Scroll 至該筆資料
                  3> store.findby  用法

--> 若 [存檔]後, store.reload() ,則新增的該筆資料可能不見,
      所以應該由前端 取得 MAXITM 後, 直接設定 store.欄位值, 不重新 reload();





1>store.reload()後, 找出剛才新增的那筆資料
//onclick : 會先執行 partent.click , 才執行 this.click
    Ext.getCmp('btn_save').on('click', function () {
        console.log("btn_save click my");        
        //gridstore.reloadGirdData();
        var cur_recs = Ext.getCmp("grid_Single").getSelectionModel().getSelection();
        var cur_rec = cur_recs[0];
        console.log("cur_rec=", cur_rec);
        var Tmp_CLS, Tmp_DITM,Tmp_REPN;
        var np = {};
        Tmp_CLS = cur_rec.data["CLS"].toString();
        Tmp_DITM = cur_rec.data["DITM"].toString();
        Tmp_REPN = cur_rec.data["REPN"].toString();
        np = {
            CLS: Tmp_CLS,
            DITM: Tmp_DITM,
            REPN: Tmp_REPN,
        }
        console.log("np=", np);
//gridstore.reload(); 必需在 onload event - 讀完資料後, 才 findBy , 找到的index才會準 
        gridstore.reload();
        //gridstore.find("DITM", Tmp_DITM);

        gridstore.on('load', function () {
            console.log("inside onload");
            //若新增的資料在另一分頁, 則 reload()後, 無法找到 
            // --> 所以存檔時,即時更新 store的欄位值 , 不重新 reload() & 不locate 剛才編輯的資料
            var Tmp_index = gridstore.findBy(function (record, id) {
                var Tmp_bol = true;
                //console.log("record.data[CLS].toString()", record.data["CLS"].toString());
                //console.log("record.data[DITM].toString()", record.data["DITM"].toString());
                //console.log("record.data[REPN].toString()", record.data["REPN"].toString());
                Tmp_bol = record.data["CLS"].toString() == Tmp_CLS
                    && record.data["DITM"].toString() == Tmp_DITM
                    && record.data["REPN"].toString() == Tmp_REPN;
                console.log("Tmp_bol=", Tmp_bol);
                return Tmp_bol;   // true : 有找到
            });

            console.log(" index =", Tmp_index);
            cur_rec = gridstore.getAt(Tmp_index);
            Ext.getCmp("grid_Single").getSelectionModel().select(cur_rec);
            console.log(" Ext.getCmp(grid_Single).getSelectionModel().select(cur_rec); " );
        });
        console.log("after  onload ");
        //datastore.ITM欄位值設為 MAXITM
        //mysuccessalert("btn_save click");
    });