2023年6月18日 星期日

V120202D -getUrlStr - 傳回ds - foreach(DataRow dr -checkRtnOk - - 挑選[申請單號]後,自動加入 store - dt2JSON - Ext.decode

 目的: V120202D - 領料登記 - 挑選[申請單號]後,自動加入 store

處理說明: 1>開啟畫面, store : where 1=2
                  2>利用隱藏按鈕 [加入資料], 挑選完資料(onchange)後,執行[加入資料]鈕
                  3>[挑選資料]後,將所挑選資料轉成 dt2JSON String傳至前端, 
                  4>由 Ext.decode 解碼成 Object (Tmp_recs)
                  5>將 Tmp_rec=Tmp_recs[i], 將 Tmp_rec 加入 store       

1>*.js
,{
xtype: "button", id: "btn_APNO", name: "btn_APNO", text: "...",
handler: function () {
//不分頁 & 不 suspendevent - 以便觸發 change event
var win = EditPickx('申請單號', '../api/V120202DAPI/get_APNOPick', ['APNO'],
['sub_APNO'], J_pickstore_sub_APNO, J_pickcolumns_sub_APNO, false,false);
win.show();
}
},
{ //加入資料
xtype: "button", text: "加入資料", width: 120, border: 2, margin: { left: 10, },
hidden: true,
id: "sub_btn_Add",
handler: function () {
console.log("insider handler of sub_btn_Add");
var Tmp_APNO = Ext.getCmp("sub_APNO").getValue();
var Tmp_Str = "";
if (checkisnull(Tmp_APNO)) {
Tmp_Str = "請先輸入[申請單號] !!"
mywarnalert(Tmp_Str);
return;
}
var np = {};
np["sub_APNO"] = Tmp_APNO;
var Tmp_url = "../../api/V120202DAPI/get_sub_data1";

//取得挑選資料的 dt2JSON 字串 
//getUrlStr : 必需傳回字串( dt.JSON字串) , 非 ds
var rtn_Str = getUrlStr(Tmp_url, np, "加入資料");

console.log("rtn_Str:", rtn_Str);

if (checkRtnOK(rtn_Str)) {
var Tmp_recs = Ext.decode(rtn_Str);
var Tmp_rec;
for (i = 0; i < Tmp_recs.length; i++) {
Tmp_rec = Tmp_recs[0];
console.log("Tmp_rec:", Tmp_rec);
if (Ext.getCmp("sub_Grid").store.find("APNO", Tmp_rec["APNO"]) == -1) {
console.log("add store Tmp_rec:", Tmp_rec);
Ext.getCmp("sub_Grid").store.add(Tmp_rec);
Ext.getCmp("sub_APNO").setValue("");
}
} //end of for
console.log("store :", Ext.getCmp("sub_Grid").store);
} // end of if (checkRtnOK(rtn_Str)) {
} // end of handler
}, // end of 加入資料

//開啟畫面
var win1 = getMyWindow("領料登記", sub_V120202D_Flds, sub_V120202D_Btns, "D");
    win1.x = 100;
    win1.setWidth(500);
    win1.setHeight(400);
    var np = {};
    //np["sub_APNO"] = Ext.getCmp("sub_APNO").getValue();
    var Tmp_url = "../../api/V120202DAPI/get_sub_data";  //
    Ext.getCmp("sub_Grid").store.getProxy().url = Tmp_url;
    Ext.getCmp("sub_Grid").store.getProxy().extraParams = np; //分頁OK,篩選條件OK    
    Ext.getCmp("sub_Grid").store.load();
    win1.show();
    
2>*.cs
//[顯示資料]鈕 - store.資料 - where  1=2
        [HttpPost]
        //public HttpResponseMessage get_sub_Data()
        public dynamic get_sub_Data()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;            

            OracleCommand cmd = new OracleCommand();
            var response = this.Request.CreateResponse();
            /*
             * { name: "APNO" },
{ name: "MATNR" },
{ name: "MAKTX" },
{
name: "QTY",
convert: function (value, record) { return Ext.util.Format.round(value, 2); }
},
{ name: "UNIT" },
             */
            string Tmp_Sql1 = "";  //for 日期起迄
            string Tmp_Sql = "  SELECT  RNK,APNO,APER,APDT,PN,MATNR,MAKTX,QTY,UNIT,MPKUPP,MPKUPDT,STAT "
                                        + "  FROM   ( SELECT  dense_rank()  over(order by  APNO) as RNK,"
                                                                      + "    APNO,APER,APDT,PN,MATNR,MAKTX,QTY,UNIT,MPKUPP,MPKUPDT,STAT  "
                                                        + "   FROM     AMM_COMQ "
                                                       + "   WHERE  1=2 ";            
            Tmp_Sql = Tmp_Sql + ")";

            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            //不分頁
            DataSet ds = getDataTable(cmd, countSql, false);

            //- [單況(STAT) ]            
            Tmp_Sql = " select    KEY_CODE as  STAT, DESCPT "
                           + " from      KEYCODE  "
                           + "  where   TBL_NAME = 'AMM_COMQ'  "
                           + "  and        KEY_NAME = 'STAT'   ";
            getKeyCode("STAT", ref ds, Tmp_Sql);

            int Tmp_TOTAL = int.Parse(ds.Tables["T1C"].Rows[0]["TOTAL"].ToString());
            string Tmp_Str = "";
            string Tmp_RtnMsg = "";



            //自訂  CaluField 欄位  - [儲位(SP_)] 
            ds.Tables["T1"].Columns.Add("WH_", typeof(object));
            ds.Tables["T1"].Columns.Add("SP_", typeof(object));
            ds.Tables["T1"].Columns.Add("APER_", typeof(object));
            ds.Tables["T1"].Columns.Add("MPKUPP_", typeof(object));

            OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));
            OracleCommand cmd1 = new OracleCommand();
            OracleDataReader reader;
            string Tmp_dt2JSON;
            try
            {
                conn.Open();
                conn.ClientInfo = User.Identity.Name;
                conn.ModuleName = BaseSYS + "_" + BaseMODID;
                conn.ActionName = ActionName;
                cmd1.Connection = conn;

                string Tmp_cur_APNO = "";
                string Tmp_WH_ = "";
                string Tmp_SP_ = "";
                string Tmp_APER_ = "";
                string Tmp_MPKUPP_ = "";

                foreach (DataRow dr in ds.Tables["T1"].Rows)
                {
                    Tmp_WH_ = "";
                    Tmp_SP_ = "";
                    Tmp_APER_ = "";
                    Tmp_MPKUPP_ = "";
                    Tmp_cur_APNO = dr["APNO"].ToString();
                    if (Tmp_cur_APNO.Length > 0)
                    {
                        Tmp_Sql = " SELECT  WH,SP  "
                                        + " FROM    AMM_COMPQTY    "
                                        + "  WHERE APNO=" + myfunc.AA(Tmp_cur_APNO)
                                        + "   AND      rownum=1 "
                                       + "   ORDER  BY APNO DESC ";
                        Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                        if (Tmp_Str.Length > 0)
                        {
                            Tmp_WH_ = myfunc.StrExtract(Tmp_Str, 1, ";");
                            Tmp_SP_ = myfunc.StrExtract(Tmp_Str, 2, ";");
                        }
                        Tmp_Sql = " SELECT  EMPLYNM  "
                                        + " FROM    HR_EMPLYM    "
                                        + "  WHERE EMPLYID=" + myfunc.AA(dr["APER"].ToString());                                       
                        Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                        if (Tmp_Str.Length > 0)
                        {
                            Tmp_APER_ = myfunc.StrExtract(Tmp_Str, 1, ";");                            
                        }
                        dr["APER_"] = Tmp_APER_;
                        Tmp_Sql = " SELECT  EMPLYNM  "
                                        + " FROM    HR_EMPLYM    "
                                        + "  WHERE EMPLYID=" + myfunc.AA(dr["MPKUPP"].ToString());
                        Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                        if (Tmp_Str.Length > 0)
                        {
                            Tmp_MPKUPP_ = myfunc.StrExtract(Tmp_Str, 1, ";");
                        }
                        dr["MPKUPP_"] = Tmp_MPKUPP_;
                    }  // end of  foreach (DataRow row in ds.Tables["T1"].Rows)
                } //end of  foreach (dr
                   //如何將  ds 的 T1包成 JSON格式, 傳回前遄                                
                return ds;                
            } // end of try            
            finally
            {
                conn.Close();
            }


//[加入資料]鈕 - 將所挑選的申請單號, 加入子畫面.grid
        [HttpPost]
        //public HttpResponseMessage get_sub_Data1()
        public dynamic get_sub_Data1()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;            
            string Tmp_APNO = nvc["sub_APNO"];

            OracleCommand cmd = new OracleCommand();
            var response = this.Request.CreateResponse();
            /*
             * { name: "APNO" },
{ name: "MATNR" },
{ name: "MAKTX" },
{
name: "QTY",
convert: function (value, record) { return Ext.util.Format.round(value, 2); }
},
{ name: "UNIT" },
             */
            string Tmp_Sql1 = "";  //for 日期起迄
            string Tmp_Sql = "  SELECT  RNK,APNO,APER,APDT,PN,MATNR,MAKTX,QTY,UNIT,MPKUPP,MPKUPDT,STAT "
                                        + "  FROM   ( SELECT  dense_rank()  over(order by  APNO) as RNK,"
                                                                      + "    APNO,APER,APDT,PN,MATNR,MAKTX,QTY,UNIT,MPKUPP,MPKUPDT,STAT  "
                                                        + "   FROM     AMM_COMQ "
                                                       + "   WHERE  1=1 ";
            //panel11
            //申請編號 
            if (!myfunc.checkisnull(Tmp_APNO))
            {
                Tmp_Sql = Tmp_Sql + " AND    APNO=  " + myfunc.AA(Tmp_APNO);
            };
            Tmp_Sql = Tmp_Sql + ")";

            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            //不分頁
            DataSet ds = getDataTable(cmd, countSql, false);

            int Tmp_TOTAL = int.Parse(ds.Tables["T1C"].Rows[0]["TOTAL"].ToString());            
            string Tmp_Str = "";
            string Tmp_RtnMsg = "";

            //- [單況(STAT) ]            
            Tmp_Sql = " select    KEY_CODE as  STAT, DESCPT "
                           + " from      KEYCODE  "
                           + "  where   TBL_NAME = 'AMM_COMQ'  "
                           + "  and        KEY_NAME = 'STAT'   ";
            getKeyCode("STAT", ref ds, Tmp_Sql);


            //自訂  CaluField 欄位  - [儲位(SP_)] 
            ds.Tables["T1"].Columns.Add("WH_", typeof(object));
            ds.Tables["T1"].Columns.Add("SP_", typeof(object));

            string Tmp_WH_ = "";
            string Tmp_SP_ = "";
            OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));
            OracleCommand cmd1 = new OracleCommand();
            OracleDataReader reader;
            string Tmp_dt2JSON;
            try
            {
                conn.Open();
                conn.ClientInfo = User.Identity.Name;
                conn.ModuleName = BaseSYS + "_" + BaseMODID;
                conn.ActionName = ActionName;
                cmd1.Connection = conn;

                var Tmp_cur_APNO = "";
                foreach (DataRow dr in ds.Tables["T1"].Rows)
                {
                    Tmp_cur_APNO = dr["APNO"].ToString();                    
                    if (Tmp_cur_APNO.Length > 0)
                    {
                        //自訂 SQL , 取得 CaluField 欄位值 
                        Tmp_Sql = " SELECT  WH,SP "
                                       + "  FROM   AMM_COMPQTY "
                                       + " WHERE  1=1 "
                                       + "  AND       APNO=" + myfunc.AA(Tmp_cur_APNO)
                                       +"  AND       rownum=1 "                                       
                                       + "   ORDER  BY SP  ";
                        Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                        if (Tmp_Str.Length > 0)
                        {
                            Tmp_WH_ = myfunc.StrExtract(Tmp_Str, 1, ";");
                            Tmp_SP_ = myfunc.StrExtract(Tmp_Str, 2, ";");
                        }
                        dr["WH_"] = Tmp_WH_;
                        dr["SP_"] = Tmp_SP_;                                                
                    }  // end of   if (Tmp_NATIXX.Length > 0)
                }  // end of  foreach (DataRow row in ds.Tables["T1"].Rows)
                   //如何將  ds 的 T1包成 JSON格式, 傳回前遄                

                Tmp_dt2JSON = myfunc.dt2JSON(ds.Tables["T1"]);
                Tmp_RtnMsg = Tmp_dt2JSON;
                return Tmp_RtnMsg;
            } // end of try
            catch (Exception e)
            {
                var Tmp_ErrMsg = myfunc.Get1ORA(e.Message);
                Tmp_RtnMsg = "錯誤: 取得[條碼編號]的資料失敗 (get_sub_data1) !!  <br> "
                                         + Tmp_ErrMsg;
                return Tmp_RtnMsg;
            }
            finally
            {
                conn.Close();
            }
            //return ds;           

        }// end of get_sub_Data1();

2023年6月16日 星期五

V120202D - model -如何看 store.model的欄位值 - 子畫面.store 未顯示資料

目的: V120202D - 子畫面.store 未顯示資料 - model -如何看 store.model的欄位值

處理說明: 1>後端.store 有傳回 ds (含 T1 & T1C) , 但是前端未顯示資料
                  2>如何看 store.model 欄位值 , 
                       --> Store.model.setFields.[[Scopes]].0.J_gridmodel.Array(14)





1>*.js  - grid 未顯示資料  - 因為 store.model  --> sub_model 多一[ ]  , 修正即可
var sub_model = [              
  [
            { name: "APNO" },
            { name: "APER" },
            { name: "APDT" },
            {
                name: "QTY",
                convert: function (value, record) { return Ext.util.Format.round(value, 2); }
            },
            { name: "UNIT" },
            { name: "PN" },
            { name: "MATNR" },
            { name: "WH_" },
            { name: "SP_" },
            { name: "MAKTX" },
            { name: "MPKUPP" },
            { name: "MPKUPDT" },
            { name: "STAT" },
            { name: "STAT_" },                    
]
    ];






2023年6月8日 星期四

V20302 - 交修件除帳 - 勾選 – 保留分頁勾選資料 - checkbox - cbxArr

 目的: V20303 - 交修件除帳 - 勾選 保留分頁勾選資料

處理說明:    1>利用    cbxArr : 記錄目前挑選資料.PK    ,
                                                                cbxIdx++;
             cbxArr[cbxIdx] = record.get('FMNO');
                     2>勾選時, 會觸發  columns      renderler    event 
                                               按[ ]時,若目前未勾選
                                                                                     cbxIdx++;
                      cbxArr[cbxIdx] = record.get('FMNO'); 
                                                                       若已勾選
                                     chkd = '';
                    cbxArr[i] = '';
                     3>利用 cbxArr1[ ] 儲存目前勾選資料內容 - Object { FMNO: xxxx, TYPEAF: xxxx}
                  cbxArr1[cbxIdx] = {
                 FMNO: record.get('FMNO'), 
                                              TYPEAF: record.get('TYPEAF'),
AMMNO: record.get('AMMNO'), OGONOAF: record.get('OGONOAF'), NGONOAF: record.get('NGONOAF'), 
SAPNO_: record.get('SAPNO_'), PN_: record.get('PN_'),
C_NM: record.get('C_NM'), SEQOAF: record.get('SEQOAF'), MB1A: record.get('MB1A'), RBTHAF: record.get('RBTHAF'), RPNOAF: record.get('RPNOAF'), MRPNOAF: record.get('MRPNOAF'), 
WBSNO: record.get('WBSNO'), DTSOR: record.get('DTSOR'), RQTYAF: record.get('RQTYAF'), NSN: record.get('NSN'), EIAC_CUS: record.get('EIAC_CUS'), 
FACWC: record.get('FACWC'), FRTP: record.get('FRTP'), STATFM: record.get('STATFM'), STATFM_: record.get('STATFM_'), 
};










1>*.js

var J_columns = [
{ header: "", xtype: "rownumberer", width: 40, align: "center", sortable: false },
{
header: "勾選", dataIndex: "CHECK", width: 40, xtype: 'checkcolumn',
renderer: function (value, metadata, record, rowIndex, colIndex, store) {
var chkd = '';
if (store.currentPage != curPage) {
if ((cbxArr.indexOf(record.get('FMNO'))) >= 0) {
chkd = 'checked';
}
}
else {
var i = cbxArr.indexOf(record.get('FMNO'));
if ((value === 'Y') || (value === true)) {
if (i < 0) {
chkd = 'checked';
cbxIdx++;
cbxArr[cbxIdx] = record.get('FMNO');
cbxArr1[cbxIdx] = {
FMNO: record.get('FMNO'), TYPEAF: record.get('TYPEAF'),
AMMNO: record.get('AMMNO'), OGONOAF: record.get('OGONOAF'), 
                                NGONOAF: record.get('NGONOAF'), SAPNO_: record.get('SAPNO_'),
                                PN_: record.get('PN_'),C_NM: record.get('C_NM'), 
                                SEQOAF: record.get('SEQOAF'), MB1A: record.get('MB1A'), 
                                RBTHAF: record.get('RBTHAF'), RPNOAF: record.get('RPNOAF'), 
                                MRPNOAF: record.get('MRPNOAF'), WBSNO: record.get('WBSNO'), 
                                DTSOR: record.get('DTSOR'), RQTYAF: record.get('RQTYAF'), 
                                NSN: record.get('NSN'), EIAC_CUS: record.get('EIAC_CUS'), 
FACWC: record.get('FACWC'), FRTP: record.get('FRTP'), 
                                STATFM: record.get('STATFM'), STATFM_: record.get('STATFM_'), 
};
console.log("cbxArr[cbxIdx]=", record.get('FMNO'));
}
else {
chkd = '';
cbxArr[i] = '';
cbxArr1[i] = {};
}
}
else {
if (i >= 0) {
chkd = '';
cbxArr[i] = '';
cbxArr1[i] = {};
}
}
}
var cbx = "<input  type='checkbox'  name='" + (record.get('FMNO') + "_V20302") + "'   " + chkd + " >";
return cbx;
},
},


2023年5月31日 星期三

V120202 -getUrlStr() - url傳回字串 - checkRtnOk() – [全部選取] [全部取消] – 允許分頁選取保留 - checkbox - url傳回值

 目的: V120202 – [全部選取] [全部取消] – 允許分頁選取保留 -checkbox

處理說明:  1>[全部選取]鈕
                                           1>將目前 store.CHECK   欄位均設為    true                                          
                                           2>cbxAry  :   將所有的  PK(APNO)     存入  cbxAry                                           


1>*. js
//全部選取 , 將所有資料 PK 加入 cbxArr 
    function SelAllBtn_click() {
        var Tmp_PKStr = "";  //所有資料 PK 字串, 以 , 分隔
        var Tmp_url = "../../api/V120202API/getALLPKStr";
        var np = grid.store.getProxy().extraParams;
        var rtn = getUrlStr(Tmp_url, np, "全部選取鈕");
        if (checkRtnOK(rtn)) {
              set_PgAll();
             var Tmp_PKStr = rtn;
            setCbxArr(Tmp_PKStr);            
    }  // end of SelAllBtn_click


//全部取消 , 將所有資料 PK 加入 cbxArr 
    function unSelAllBtn_click() {
        var Tmp_PKStr = "";  //所有資料 PK 字串, 以 , 分隔
        var Tmp_url = "../../api/V120202API/getALLPKStr";
        var np = grid.store.getProxy().extraParams;
        var rtn = getUrlStr(Tmp_url, np, "全部取消鈕");
        if (checkRtnOK(rtn)) {
            //set_AllUn();            
            set_PgUn();
            resetCbxArr();
        } // end of chkRtnOk(rtn)
    }  // end of unSelAllBtn_click

2>*.cs
//取所有資料.PKStr , 並以 , 分隔
        [HttpPost]
        public dynamic getALLPKStr()
        {            
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            //DataSet ds = getGridDataPage();
            //return ds;
            string Tmp_LCAA = nvc["s_LCAA"];
            string Tmp_ASN = nvc["s_ASN"];
            string Tmp_MATNR = nvc["s_MATNR"];
            string Tmp_APNO = nvc["s_APNO"];
            string Tmp_APER = nvc["s_APER"];

            string Tmp_APDT1 = "";   //申請日期  - 起迄
            string Tmp_APDT2 = "";   //申請日期  - 起迄
            if (!myfunc.checkisnull(nvc["s_APDT1"]))
            {
                Tmp_APDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_APDT1"]));
            };
            if (!myfunc.checkisnull(nvc["s_APDT2"]))
            {
                Tmp_APDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_APDT2"]));
            };

            //單況(A/B/C/D/Z)
            string Tmp_STAT = nvc["s_STAT"];


            OracleCommand cmd = new OracleCommand();
            string Tmp_Sql = " SELECT  RNK,     "
                                       + "   APNO,LCAA,ASN,SAPNO,PN,MATNR,RPN,QTY,UNIT,"
                                       + "    APER,APDT,STAT,MPKUPP,MPKUPDT,COMPER,COMPDT,DELTP,DELTDT  "
                                       + "  FROM  ( "
                                      + "   select  dense_rank()  over(order by  APNO) as RNK,"
                                                  + "   APNO,LCAA,ASN,SAPNO,PN,MATNR,RPN,QTY,UNIT,  "
                                                  + "   APER,APDT,STAT,MPKUPP,MPKUPDT,COMPER,COMPDT,DELTP,DELTDT  "
                                      + "  FROM  AMM_COMQ "
                                      + "  Where  1=1  ";

            //機位
            if (!myfunc.checkisnull(Tmp_LCAA))
            {
                Tmp_Sql = Tmp_Sql + " AND   LCAA  = " + myfunc.AA(Tmp_LCAA);
            };
            //機號
            if (!myfunc.checkisnull(Tmp_ASN))
            {
                Tmp_Sql = Tmp_Sql + " AND   ASN= " + myfunc.AA(Tmp_ASN);
            };
            //物料編號
            if (!myfunc.checkisnull(Tmp_MATNR))
            {
                Tmp_Sql = Tmp_Sql + " AND   (       (MATNR  LIKE " + myfunc.AA("%" + Tmp_MATNR + "%") + ")"
                                                                 + "  OR  (MATNR IN (  SELECT  SPN  "
                                                                                                   + " FROM    AMM_SPN "
                                                                                                   + " WHERE  PN LIKE " + myfunc.AA("%" + Tmp_MATNR + "%")
                                                                                                   + "  AND       STATUS='A'   ) )"
                                                                + ")";
            };
            //申請單號
            if (!myfunc.checkisnull(Tmp_APNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   APNO  = " + myfunc.AA(Tmp_APNO);
            };
            //申請人
            if (!myfunc.checkisnull(Tmp_APER))
            {
                Tmp_Sql = Tmp_Sql + " AND   APER= " + myfunc.AA(Tmp_APER);
            };

            string Tmp_Sql1 = "";
            //申請日期 - 起  - 迄
            if ((!myfunc.checkisnull(Tmp_APDT1)) || (!myfunc.checkisnull(Tmp_APDT2)))
            {
                if (!myfunc.checkisnull(Tmp_APDT1))
                {
                    Tmp_Sql1 = Tmp_Sql1 + "  AND        APDT>=" + myfunc.AA(Tmp_APDT1);
                };
                if (!myfunc.checkisnull(Tmp_APDT2))
                {
                    Tmp_Sql1 = Tmp_Sql1 + "  AND        APDT<=" + myfunc.AA(Tmp_APDT2);
                }
                Tmp_Sql = Tmp_Sql + Tmp_Sql1;
            };


            //單況 : 待撥料/撿料中/撿料完成/已領用/已撤銷(A/B/C/D/Z)  全部: ALL - radioboxgroup
            if (!myfunc.checkisnull(Tmp_STAT))
            {
                switch (Tmp_STAT)
                {
                    case "ALL":  //全部
                        Tmp_Sql = Tmp_Sql;
                        break;
                    default:
                        Tmp_Sql = Tmp_Sql + " AND   STAT=" + myfunc.AA(Tmp_STAT);
                        break;
                }
            };

            Tmp_Sql = Tmp_Sql + "   )   ";

            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            //匯出時 ,取全部資料, par_paging =false , 取全部資料
            DataSet ds = getDataTable(cmd, countSql, false);

            int Tmp_Cnt = ds.Tables["T1"].Rows.Count;
            var Tmp_PKStr = "";
            for (var i=0; i<Tmp_Cnt;i++)
            {
                DataRow dr = ds.Tables["T1"].Rows[i];
                Tmp_APNO = dr["APNO"].ToString();
                Tmp_PKStr = Tmp_PKStr + Tmp_APNO + ",";
            }
            if (Tmp_PKStr != "")
            {
                Tmp_PKStr = Tmp_PKStr.TrimEnd(',');
            }
            return Tmp_PKStr;
        }

js 設定中斷點設定 - breakpoint -javascript

目的: 在前端 js 設定中斷點 , breakpoint  - 啟用 前端 breakpoint

處理說明: 1>在 Visual Studio 設定 breakpoint - 啟用
                      偵錯 --> 選項 --> 一般 --> [V]為 ASP.NET 啟用 JavaScript 偵錯
                  2>設定之後, 即可在 *.js 啟用中斷點偵錯










V120202 – 勾選 checkbox , 分頁時可以保留勾選

 目的: V120202 – 勾選 checkbox , 分頁時可以保留勾選 

處理說明: 1>*_json.js  利用 cbxAry 記錄目前勾選資料的 PK(APNO)
                       var cbxArr = []; //記錄目前 PK Array ,(PK:APNO)
                       var cbxIdx = -1; //記錄目前 cbxAry 的 index
                        var curPage = 0; //記錄目前 Page (store)
                  2>*_json.js , columns 新增  CHECK欄位, onClick 會觸發 renderer event ,
                       若原本未勾選, 則變勾選, 若原本勾選,則變未勾選
                       var J_columns = [{
               header: "勾選", dataIndex: "CHECK", width: 40, xtype: 'checkcolumn',
        renderer: function (value, metadata, record, rowIndex, colIndex, store) {
                                :
                                 var i = cbxArr.indexOf(record.get('APNO'));
if ((value === 'Y') || (value === true)) {
if (i < 0) {
chkd = 'checked';
cbxIdx++;
cbxArr[cbxIdx] = record.get('APNO');
}
else {
chkd = '';
cbxArr[i] = '';
}
}
               3>*.js  , 若 store.onload 則記錄目前的 頁次(store.currentPage),且顯示 CHECK是否勾選
                         curPage=gridstore.currentPage;   
                         var idx = cbxArr.indexOf(rec.data['APNO']);
                          if (idx >= 0) {  rec.data['CHECK'] = true; }
                          else {  rec.data['CHECK'] = false; }






V120202 – radioGroup 排成2行 – 垂直 , columns - V80202F – 列印- radioGroup : 橫向排列 layout: ‘hbox’

 目的: V120202 – radioGroup 排成2 垂直

           V80202F – 列印- radioGroup : 橫向排列 layout: ‘hbox’

處理說明: 1> V120202 – radioGroup 排成2 垂直 {
                                xtype: 'radiogroup', fieldLabel: '單況', labelWidth: 100,
                                //layout: 'vbox',  //vbox:直向  , hbox: 橫向 , 不可設為 vbox,否則仍會排成一行
                                vertical: true,    columns: [50, 50],
                                id: 's_STAT', 
                                items: [
                                    {
                                        boxLabel: '待撥料',
                                        name: 's_STAT',
                                        inputValue: 'A',
                                        width: 70,
                                        //checked: true,
                                        //id: 's_checkbox1'
                                    }, .....
                           






1>*.js
 //交機現況: 在廠機/已交機/全部
    var cmp_ARPSTS = get_cmp_rdgrp1('交機現況', 'sub_ARPSTS',   100,'hbox');
    var cmp_ARPSTS1 = get_cmp_rd0('在廠機', 'sub_ARPSTS', 80, '1');
    var cmp_ARPSTS2 = get_cmp_rd0('已交機', 'sub_ARPSTS', 80, '2');
    var cmp_ARPSTS3 = get_cmp_rd0('全部', 'sub_ARPSTS', 80, '3');
    cmp_ARPSTS.items.push(cmp_ARPSTS1, cmp_ARPSTS2, cmp_ARPSTS3);    
    cmp_ARPSTS1.checked = true;

2>myfunc.js - get_cmp_rdgrp1
//get_cmp_rdgrp1 - 取得 checkgroup 元件,
//par_layout: 'vbox' - 直向  radio   , 'hbox' : 橫向 radio
function get_cmp_rdgrp1(par_caption, par_id, par_l_width, par_layout, par_flex) {
    if (checkisnull(par_flex)) {
        par_flex = 10;
    }
    if (checkisnull(par_layout)) {
        par_layout = 'vbox';  //預設直向 radio
    }
    var rtn_cmp =
    { //已完工, 未完工 --> 兩者不能同時勾選
        xtype: 'radiogroup', fieldLabel: par_caption,
        labelWidth: par_l_width, 
        layout: par_layout,        
        width: '100%',
        id: par_id,        
        items: [],
    }
    return rtn_cmp;
}