顯示具有 主機傳回值 標籤的文章。 顯示所有文章
顯示具有 主機傳回值 標籤的文章。 顯示所有文章

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

2022年7月20日 星期三

c# 主機傳回 string vs. Http.StringContent vs. HttpResponseMessage 的差異說明 - Ext.Ajax.reuqest(

目的: 1>說明主機端傳回 string vs Http.StringContent vs  HttpResponseMessage 的不同(主機端)

         2>說明主機端傳回 string  vs Http.StringContent vs HttpResponseMessage , 在前端接收的結果

摘要:  

         1>string : 單純的資料型態 , 傳回至前端會含 字串引號("  ")
         2>StringContent 為 Object 含Header,content  , 真正的內容存在 content(以 byte 方式儲存)
         3>HttpStringMessage: 傳回至前端, response.responseText 不會含字串引號


1> *.cs  c# 主機端 *Controller:  

    1>>String Tmp_RtnStr;   //一般的字串



   2>>StringContent Tmp_StringContent  ;    // HTTP  的字串內容, 含 Header 
1) HTTP  的字串內容, 含 Header (說明 charset) , 
2) 真正的內容存在 [content] 屬性


2> *.js  JavaScript 前端 , 接收主機端(String及 Http.StringContent)的傳回結果

Case1: 接收主機傳回 string
     1>>string : 主機端傳回 string
         *.cs
        [HttpPost]        
        public String get_PRNLIST()
        {
                   String Tmp_RtnStr;         
                  Tmp_RtnStr = "{Key:" + myfunc.AA("ABC") + "}";
                 return Tmp_RtnStr
        }
     
   2>>前端接收 [主機端傳回 string]:




var np = {};
        np["CLS"] = Tmp_CLS;
        np["DITM"] = Tmp_DITM;
        var isOk = true;
Ext.Ajax.request({
            method: "POST",
            url: '../../api/V120103API/CHECK_CLS_DITM',
            params: np,
            async: false,
            success: function (response, opts) {
                console.log("0 response.responseText=", response.responseText);
                var Tmp_Obj = Ext.decode(response.responseText);
                console.log("1  Tmp_Obj=", Tmp_Obj);
                if (Tmp_Obj["success"] == false) {
                    var Tmp_Rtn_Msg = "類別(" + Tmp_CLS + ")排序項次(" + Tmp_DITM + ")已存在拆挪管制標準檔(AMM_FRO3F16STD)<br>"
                        + "請檢核<br>"
                        + Tmp_Obj["Rtn_Msg"];
                    mywarnalert(Tmp_Rtn_Msg);
                    isOk = false;
                }
            },  //end of success                
            failure: function (response, opts) {
                var Tmp_Obj = Ext.decode(response.responseText);
                var Tmp_Rtn_Msg = "類別(" + Tmp_CLS + ")排序項次(" + Tmp_DITM + ")已存在拆挪管制標準檔(AMM_FRO3F16STD)<br>"
                    + "請檢核<br>"
                    + Tmp_Obj["Rtn_Msg"];
                mywarnalert(Tmp_Rtn_Msg);
                isOk = false;
            }
        })  //end of Ext.Ajax.Request
        return isOk;
    } // end of CheckFormValue





Case2: 接收主機傳回 StringContent

    1>>string : 主機端傳回 StringContent         *.cs
        [HttpPost]        
        public StringContent get_PRNLIST()
        {
                   String Tmp_RtnStr;         
                  Tmp_RtnStr = "{Key:" + myfunc.AA("ABC") + "}";

                  StringContent Tmp_StringContent;
                 Tmp_StringContent = new StringContent(Tmp_RtnStr);
                 return Tmp_StringContent;              
        }

  2>>前端接收 [主機端傳回 StringContent]:   *.js

       console.log("0 response=", response);     
       var Tmp_ObjAryStr1 = response.responseText;
       console.log("1  response.responseText=", response.responseText);            
       var Tmp_Obj_decode1 = Ext.decode(response.responseText);
       console.log("1  Ext.decode(response.responseText)=", Tmp_Obj_decode1);            
       var Tmp_Obj_decode1_1 = Ext.decode(Tmp_Obj_decode1);
       console.log("1  Ext.decode_2(response.responseText)=", Tmp_Obj_decode1_1);            


Case3: 接收主機傳回 HttpResponseMessage

1>>HttpResponseMessage: 主機端傳回 HttpResponseMessage  
        public HttpResponseMessage get_PRNLIST()
      {
            Tmp_RtnStr = "{Key:" + myfunc.AA("ABC") + "}";
            var response = this.Request.CreateResponse();
            response.Content = new StringContent(Tmp_RtnStr);    // 回應內容
            return response;
         }



 console.log("1  response.responseText=", response.responseText);            
            var Tmp_Obj_decode1 = Ext.decode(response.responseText);
            console.log("1  Ext.decode(response.responseText)=", Tmp_Obj_decode1);            
            var Tmp_Obj_decode1_1 = Ext.decode(Tmp_Obj_decode1);
            console.log("1  Ext.decode_2(response.responseText)=", Tmp_Obj_decode1_1);