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

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");
    });