Easier said than done,just do it!
welcome to karlen's home

导航

 

//Ajax2

//函數名稱:getXmlHttpRequest()

/* ---------------------------------------------------------------------*/

/*目的:生成XMLHTTPRequest,瀏覽器對像

/*參數:N/A

/* xx. YYYY/MM/DD   VER         AUTHOR      COMMENTS(說明修改的內容)

/* ---------------------------------------------------------------------*/

function GetXmlHttpRequest()

{

    var A=null;

    try

    {

        A=new ActiveXObject("Msxml2.XMLHTTP");

    }

    catch(e)

    {

        try

        {

            A=new ActiveXObject("Microsoft.XMLHTTP");

        }

        catch(oc)

        {

            A=null;

        }

    }

    if(!A && typeof XMLHttpRequest != "undefined")

    {

        A=new XMLHttpRequest();//Mozilla﹑Netscape﹑Safari 這些瀏覽器

    }

    return A

}

//客戶代號帶出一系列相關的欄位值出來,如何將多個值連接後在JS中作分割

實例一: grid中多個編輯欄位由其中一個欄位值聯動帶出來

function GetCustMag(obj,objIndex)

{

    try

    {

        var objgrd = document.getElementById('grvAddAll');

        if(obj.value.trim().length == 0) {

            objgrd.rows[objIndex+1].cells[2].childNodes[0].value = "";

            objgrd.rows[objIndex+1].cells[3].childNodes[0].value = "";

            return true;

        }

        var http = getXmlHttpRequest();

        var url = "PSSBPSCRM.ASPX?CustID=" + encodeURI(obj.value.trim());

        //解決緩存

        url += "&random=" + Math.random();

        http.open("GET",url,false);

        http.send();

        var strResp = http.responseText;

        var strGridName ="grvAddAll_ctl";

        if(objIndex + 2 <10) strGridName="grvAddAll_ctl0";

        var o_txtMTRBASE_ID =document.getElementById(strGridName+(objIndex + 2)+"_txtMTRBASE_ID");

        var o_hidMTRBASE_NAME =document.getElementById(strGridName+(objIndex + 2)+"_hidMTRBASE_NAME");

        var o_hidUNID_PRICE0 =document.getElementById(strGridName+(objIndex + 2)+"_hidUNIT_ID");

        var o_hidTAX_TYPE =document.getElementById(strGridName+(objIndex + 2)+"_hidTAX_TYPE");//Add by Kangco

        var o_lblTAX_NAME =document.getElementById(strGridName+(objIndex + 2)+"_lblTAX_NAME");

        var o_hidTAX_NAME =document.getElementById(strGridName+(objIndex + 2)+"_hidTAX_NAME");

        var o_txtREMARKGrv =document.getElementById(strGridName+(objIndex + 2)+"_txtREMARKGrv");

       

        //add by Kangco 20070920

        var o_drpORDER_ID = document.getElementById(strGridName+(objIndex + 2)+"_drpORDER_ID");

        var o_drpSTORE_ID = document.getElementById(strGridName+(objIndex + 2)+"_drpSTORE_ID");

       

        if(strResp != 'null')

        {

            if(strResp.indexOf('$')>-1)

            {

                objgrd.rows[objIndex+1].cells[3].childNodes[0].innerText = strResp.split('$')[1];

                o_hidMTRBASE_NAME.value = strResp.split('$')[1];

                objgrd.rows[objIndex+1].cells[4].childNodes[0].value = strResp.split('$')[2];//包裝單位

                objgrd.rows[objIndex+1].cells[6].childNodes[0].value = strResp.split('$')[3];//單價

                objgrd.rows[objIndex+1].cells[8].childNodes[0].value = strResp.split('$')[4];//換算庫存單位量

                objgrd.rows[objIndex+1].cells[9].childNodes[0].innerText = strResp.split('$')[5];//庫存單位

                o_hidUNID_PRICE0.value = strResp.split('$')[5];

                objgrd.rows[objIndex+1].cells[10].childNodes[0].value = strResp.split('$')[6];//庫存單價

                //Edit by Kangco

                o_drpORDER_ID.value = strResp.split('$')[7];//等級

                o_drpSTORE_ID.value = strResp.split('$')[8];//出庫倉別

 

                o_hidTAX_TYPE.innerText = strResp.split('$')[9];

                o_lblTAX_NAME.innerText = strResp.split('$')[10];//課稅別名稱

                o_hidTAX_NAME.innerText = strResp.split('$')[10];//課稅別名稱

                o_txtREMARKGrv.value = strResp.split('$')[11];//備注

                if(objgrd.rows[objIndex+1].cells[6].childNodes[0].onblur != null)

                {

                    objgrd.rows[objIndex+1].cells[6].childNodes[0].onblur();

                }

                if(objgrd.rows[objIndex+1].cells[10].childNodes[0].onblur != null)

                {

                    objgrd.rows[objIndex+1].cells[10].childNodes[0].onblur();

                }

               

            }

            else

            {

                objgrd.rows[objIndex+1].cells[3].childNodes[0].innerText ="";

                o_hidMTRBASE_NAME.value = strResp.split('$')[1];

                objgrd.rows[objIndex+1].cells[4].childNodes[0].value     ="";

                objgrd.rows[objIndex+1].cells[6].childNodes[0].value     =""//單價

                objgrd.rows[objIndex+1].cells[8].childNodes[0].value     =""//換算庫存單位量

                objgrd.rows[objIndex+1].cells[9].childNodes[0].innerText ="";      //庫存單位

                o_hidUNID_PRICE0.value = "";

                objgrd.rows[objIndex+1].cells[10].childNodes[0].value    ="";   //庫存單價

                objgrd.rows[objIndex+1].cells[11].childNodes[0].value    ="";   //等級

                objgrd.rows[objIndex+1].cells[12].childNodes[0].value    ="";   //出庫倉別

                o_hidTAX_TYPE.innerText="";   //課稅別代碼

                o_hidTAX_NAME.value = "";//課稅別

                o_txtMTRBASE_ID.value = "";//清空自身

                ShowError('00048','品項代號');

            }

        }

     }

     catch(e)

     {

        //alert("找不到");

        //ShowError('B0047','品項代號');

     }

}

Page_Load事件中:

if (Request.QueryString["CustID"] != null)

   {

    GetParaData(Request.QueryString["CustID"].ToString());

}

GetParaData取得資料函數:

 

#region [Ajax]根據客戶ID獲品項信息集

    /// <summary>

    /// 根據客戶ID獲品項信息集

    /// </summary>

    /// <param name="s_aCustID"></param>

    private void GetParaData(string s_aCustID)

    {

        BMTRBASEM o_BMTRBASEM = new BMTRBASEM();

        o_BMTRBASEM.MTRBASE_ID = s_aCustID.Trim();//品項代碼

        o_BMTRBASEM.MTRBASE_NAME = "";

        o_BMTRBASEM.MTRCATOBID = "";

        o_BMTRBASEM.MTRCATOCID = "";

        DataTable dt_Name = go_BLL_PSSBPREJSCR.Query(o_BMTRBASEM, "$$$", true).Tables[0];

        if (dt_Name != null && dt_Name.Rows.Count > 0)

        {

            Response.Clear();

            Response.Write(dt_Name.Rows[0]["SEQ_NO"].ToString()//[序號]

                + "$" + dt_Name.Rows[0]["MtrBase_NAME"].ToString()//品項名稱

                + "$" + dt_Name.Rows[0]["PACK_UNIT_ID"].ToString()//包裝單位

                + "$" + dt_Name.Rows[0]["Price_No"].ToString()//單價

                + "$" + dt_Name.Rows[0]["UNITAGE"].ToString()//換算庫存單位量

                + "$" + dt_Name.Rows[0]["UNIT_ID_NAME"].ToString()//庫存單位

                + "$" + dt_Name.Rows[0]["UNID_PRICE"].ToString()//庫存單價

                + "$" + dt_Name.Rows[0]["Order_ID"].ToString()//等級

                + "$" + dt_Name.Rows[0]["Store_ID"].ToString()//入庫倉別

                + "$" + dt_Name.Rows[0]["TAX_TYPE"].ToString()//[課稅別代碼]

                + "$" + dt_Name.Rows[0]["TAX_NAME"].ToString()//[課稅別]

                + "$" + dt_Name.Rows[0]["REMARK"].ToString()//[備注]

                );

            Response.Flush();

            Response.Close();

        }

        else

        {

            Response.Clear();

            Response.Write("");

            Response.Flush();

            Response.Close();

        }

    }

    #endregion

 

//bind Ajax聯動JS事件

protected void grvAddAll_RowDataBound(object sender, GridViewRowEventArgs e)

{

if (e.Row.RowIndex > -1)

  {

    ImageButton ibntDelete = (ImageButton)e.Row.Cells[0].FindControl("ibtnDelete");

     ibntDelete.CommandArgument = e.Row.RowIndex.ToString();

     TextBox txtMTRBASE_ID = (TextBox)e.Row.Cells[2].FindControl("txtMTRBASE_ID");

            txtMTRBASE_ID.Attributes.Add("onchange", "GetCustMag(this," + e.Row.RowIndex + ");");

}

}

 

實例二:廠商聯動相應的欄位

function getCOM(){

    var srcObj = document.all.itnCOM_txtID;

    if(srcObj.value.trim()=='')

    {

        document.getElementById('drpCURR_ID').value='';//幣別     

        document.getElementById('txtPay_Due_Date').value='';//結帳日

        document.getElementById('txtPAY_DATE').value='';//付款日   

        return false;

    }

    var s_ComId=srcObj.value.trim();

    var s_Date = document.all.txtDATE.value.trim();

    var ToURL;

    var oXmlDoc = new ActiveXObject("MSXML2.DOMDocument");

    var xmlHttp=getXmlHttpRequest();   

    var ToURL="PSSBPRejSCRM.aspx?s_ComId="+escape(s_ComId)+"&s_Date="+escape(s_Date);   

    xmlHttp.open("POST",ToURL,false);              

    xmlHttp.send("");                      

    var result = xmlHttp.responseText;     

    if(result!='false')

    {

    document.getElementById('drpCURR_ID').value=result.split("&&&")[1];

    document.getElementById('drpCURR_ID').onchange();//觸發它的onchange事件            document.getElementById('txtPay_Due_Date').value=result.split("&&&")[5];        document.getElementById('txtPAY_DATE').value=result.split("&&&")[6];

        return true;

    }

    else

    {

        ShowError('00048','廠商代碼'); //廠商代碼不存在

        srcObj.value='';               

        document.getElementById('drpCURR_ID').value='';

        document.getElementById('txtPay_Due_Date').value='';

        document.getElementById('txtPAY_DATE').value='';

        return false;

    }  

}

 

後台代碼:

//ajax廠商

if (this.GetComAjax())

 {

    return;

 }

/// <summary>

/// 廠商Ajax連動相磁欄位的數據源處理

/// </summary>

/// <param name="s_aMtrId"></param>

private void getCom(string s_aDate, string s_aComId)

{

DataSet ds_Com = go_BLL_PSSBPREJSCR.GetSupp(ConvertDateFromPage(s_aDate.Trim()), s_aComId);

 string s_Result = string.Empty;

 if (ds_Com.Tables[0].Rows.Count > 0)

   {

    s_Result = ds_Com.Tables[0].Rows[0]["COM_NAME"].ToString().Trim() + "&&&";//幣別

    s_Result += ds_Com.Tables[0].Rows[0]["CURR_ID"].ToString().Trim() + "&&&";

     s_Result += ds_Com.Tables[0].Rows[0]["TICKETNO"].ToString().Trim() + "&&&";//發票聯式

     s_Result += ds_Com.Tables[0].Rows[0]["TAX_TYPE"].ToString().Trim() + "&&&";//課稅別

    s_Result += ds_Com.Tables[0].Rows[0]["PAY_TYPE"].ToString().Trim() + "&&&";//付款方式

 s_Result += ConvertDateFromData(Convert.ToDateTime(ds_Com.Tables[0].Rows[0]["Pay_Due_Date"].ToString().Trim())) + "&&&";//結帳日

            s_Result += ConvertDateFromData(Convert.ToDateTime(ds_Com.Tables[0].Rows[0]["PayDay_Date"].ToString().Trim()));//付款日

        }

        if (s_Result.Equals(""))

        {

            s_Result = "false";

        }

        Response.Clear();

        Response.Write(s_Result);

        Response.Flush();

        Response.Close();

    }

    //AJAX 避免txtCOM_txtid事件報JS錯誤,如何調用

        TextBox txtCOM_TextBox = ((TextBox)this.itnCOM.FindControl("txtID"));

        txtCOM_TextBox.Attributes.Add("onchange", "getCOM();");

 

 

實例三:由幣別聯動帶出匯率

//Ajax

function GetCurrRate(obj)

{

    var s_CURR_ID=obj.value;

    if(s_CURR_ID=="")

    {

        return true;

    }

    else

    {

        var reqURL = 'PSSBPSCRM.aspx?s_CURR_ID=' + s_CURR_ID;

        var oHttpReq = GetXmlHttpRequest();//構造XMLHTTP

        oHttpReq.open("POST",reqURL,false);//構造返回所需的參數(返回的頁面以及所要返回的參數)

        oHttpReq.send("");

        var result = oHttpReq.responseText;

        //匯率

        document.getElementById("txtRATE").value=result;

    }

}

 

 

//ajax匯率 Page_Load中加載此部分

if (Request["s_CURR_ID"] != null)

{

GetCurrAjax(Request["s_CURR_ID"].ToString());

}

 

#region [Ajax]取匯率by幣別

    /// <summary>

    /// Ajax獲取匯率

    /// </summary>

    /// <param name="s_aUserCode"></param>

    private void GetCurrAjax(string s_aCURR_ID)

    {

        string s_CurrRate = string.Empty;

        try

        {

            //getDataTable("表名","查詢條件欄位","查詢條件的值")

            string s_CURR_ID = s_aCURR_ID;

            DataTable dt_Content = go_BLL_PSSBPREJSCR.getDataTable("BCURRM", "CURR_ID", s_CURR_ID);

            if (dt_Content != null && dt_Content.Rows.Count > 0)

            {

                s_CurrRate = dt_Content.Rows[0]["CURRRATE"].ToString();

            }

            else

            {

                s_CurrRate = "";

            }

            Response.Clear();

            Response.Write(s_CurrRate);

            Response.Flush();

            Response.Close();

        }

        catch (Exception ex)

        {

            ex.Message.ToString();

        }

        finally { }

    }

    #endregion

 

posted on 2009-07-31 09:16  karlen  阅读(219)  评论(0)    收藏  举报