2012-03-01 6 views
0

여기 JavaScript 코드가 있습니다. 내가 원하는 것은이 URL의 데이터 결과를 저장하고 싶습니다. 즉,jqgrid는 변수의 데이터를 표시 할 수 없습니다.

'processjson.php?path=' + encodeURI('display/payTempEarn') + '&json=' + encodeURI(JSON.stringify(dataTempEarn)) 변수를 'tempIncDed'변수에 저장하고 해당 데이터를 내 jqgrid에 표시하고 싶습니다.

내 질문은 여기에, 왜 내가 tempIncDed 변수를 경고 할 때 그것은 정확한 데이터를 저장하지만 내 jqgrid에 표시되지 않는 이유는 무엇입니까? 코드에서 뭔가를 놓쳤습니까?

var tempIncDed = []; 
    $(document).ready(function() { 
     $("#tblIncDed").jqGrid({ data: tempIncDed, 
     datatype: "local",  
     colNames:['Code','Description', 'Taxable','Amount'], 
      colModel:[ 
      {name:'ded_code',width: 85}, 
       {name:'ded_desc'}, 
       {name:'taxable',width: 95}, 
       {name:'amount', formatter:'currency', align:'right',width: 85} 
     ], 
     rowNum:20,            
      viewrecords: true, 
      rowList:[20,50,100],   
     ppager: '#tblIncDedPager', 
     viewrecords: true, 
     caption: "Details" 
     }); 

     $("#btnEarn").click(function() { 
     var empNo = $("#tblPayroll").jqGrid('getCell',($("#tblPayroll").jqGrid('getGridParam', 'selrow')),'emp_no'); 
     var dataTempEarn = { 
      "SessionID": $.cookie("SessionID"), 
      "dataType": "data", 
      "per_id":$("#payPeriod").val(), 
      "emp_no":empNo 
     }; 
     $.ajax({ 
      type: 'GET', 
      url:'processjson.php?path=' + encodeURI('display/payTempEarn') + '&json=' + encodeURI(JSON.stringify(dataTempEarn)), 
      dataType: primeSettings.ajaxDataType, 
      success: function(data) { 
       if ('error' in data) 
       { 
        showMessage('ERROR: ' + data["error"]["msg"]); 
       } 
       else{     
        var resLen = data.result.length; 

        tempIncDed = JSON.stringify(data.result); 
      alert('this is the tempDed ' + tempIncDed);      

        $("#tblIncDed").jqGrid('setGridParam',{ 
             datatype: 'local', 
             data:tempIncDed} 
            ).trigger("reloadGrid"); 

       } 
      } 
     }); 
     $("#dialOtherIncDed").dialog("open"); 
     $("#dialOtherIncDed").attr("name","earnings"); 

     }); 
    }) 

T his is the tempDed sample data: [{"ded_id":"10000000845","ded_code":"100","ded_desc":"MEAL ALL","taxable":"N","amount":"10"},{"ded_id":"10000000849","ded_code":"101","ded_desc":"TRANSPORTATION","taxable":"N","amount":"40"},{"ded_id":"10000000851","ded_code":"103","ded_desc":"LAUNDRY","taxable":"N","mOther_amnt":"50.00"}]

내 HTML 코드의 일부를 :

<!--master grid-->   
     <div style="width:100%"> 
       <table id="tblPayroll"></table> 
       <div id="tblPayrollPager"></div> 
      </div> 
      <!--dialog that contains the table for other earnings, deductions, loans--> 
      <div id="dialOtherIncDed" style="width:100%"> 
       <table id="tblIncDed"></table> 
       <div id="tblIncDedPager"></div><br><br> 
       Total amount: <b><span id="totalAmnt"></span></b> 
      </div> 

      <!--dialog that contains the dialog edit earnings, deductions, loans--> 
      <div id="editIncDed""> 
       <table> 
       <tr> 
        <span id="incDed_name"></span> 
        <td>Amount:</td> 
      <td><input class="numeric" type="text" id="amount" value = ""/></td></tr> 
       </table> 
      </div> 
<!--edit--> 
    <div id="dialogPayrollEdit" title="Payroll Entry"> 
     <table> 
       <tr> 
        <td>Payroll Period:</td> 
        <td><b><span id="periodDateL" style="color:blue"></span></b></td> 
        <td>Type:</td><td><b><span id="rateType" style="color:blue"></span></b></td> 
        <td>Rate:</td><td><b><span id="payRate" style="color:blue"></span></b></td> 
       </tr> 
       <tr> 
      <td>Employee Name:</td> 
      <td><b><span id="empName" style="color:blue"></span></b></td> 
     </tr> 

</table> 
      <hr/> 
      <fieldset><legend>Payroll Details</legend> 
       <p><center><b>EARNINGS</b></center></p> 


      <table> 
       <tr> 
        <td> 
         .... 
        </td> 
        <td> 
         <table > 

          <tr...tr> 
          <tr>...</tr> 
          <tr>...</tr> 
          <tr><td>Other earnings</td><td><input class="numeric" style="width:60px" id="mOther_amnt" value = ""/></td><td><input type='button' value='...' id="btnEarn"></td></tr> 
          <tr><td><b>GROSS PAY</b></td><td></td><td><b><span style="width:60px;color:blue" id="grossPay"/></b></td></tr> 
         </table> 
        </td> 
       </tr> 
      </table> 
      <hr/> 


<p><center><b>DEDUCTIONS</b></center></p> 
       <table width = "100%"> 
        <tr> 
         <td> 
          .... 
         </td> 
         <td> 
          <table > 

           <tr> 
            <td>Other deductions</td> 
            <td><input class="numeric" style="width:60px;color:black" id="mOther_ded" value = "" disabled/></td> 
            <td><input type='button' value='...' id="btnDed"/></td> 
           </tr> 
           <tr> 
            <td>Advances/Loans</td> 
            <td><input class="numeric" style="width:60px;color:black" id="mLoan_ded" value = "" disabled/></td> 
            <td><input type='button' value='...' id="btnLoan"></td> 
           </tr> 
           <tr></tr> 
           <tr></tr> 
           <tr><td><b>NET PAY</b></td><td></td><td><b><span class="numeric" style="width:60px;color:blue" id="netPay" value = "" disabled/></b></td><td></td></tr> 

          </table> 
         </td> 
        </tr> 
       </table> 
       <br>     
      </fieldset><br> 
      Suggest lowest NET PAY >>> <input type="text" id="lowNetPay" value = "" style="width:80px;color: black" value='0.00' disabled/> 
    </div><br><br> 
       <br><br> 
       <button id="btnPayrollEdit">Edit</button> 

btnLoan, btnDed 및 btnEarn이 같은 격자를 사용하는 것입니다

다음은 내 JS 코드입니다. 또한 변수 tempIncDed을 사용하여 아약스의 반환 된 데이터를 저장합니다.

+0

서버로부터 반환 된 JSON 데이터 ('tempIncDed' 값)를 게시하지 않았다. 또한 왜 내가 이상한 방식으로 데이터를로드하는지 이해하지 못합니다. 나는 함수로'postData'를 사용하여 코드를 더 쉽게 만들 수 있다고 생각한다. 더욱 귀하의 페이지에 대한 설명이 도움이 될 것입니다. '# tblPayroll'은 마스터 그리드이고'# tblIncDed'는 세부 사항 그리드입니까? 어떤 역할에'# btnEarn' 버튼이 있습니까? 일부 HTML 코드가 도움이 될 것입니다. – Oleg

+0

@Oleg, 제 편집을 참조하십시오. 'btnPayrollEdit'을 클릭하면 'btnEarn', 'btnLoan', 'btnDed'가 포함 된 'dialogPayrollEdit'이 열립니다. 이 버튼 중 하나가 클릭되면 ('btnEarn','btnLoan','btnDed')'tblIncDed'를 포함하는'dialOtherIncDed'가 열리게됩니다. 응답 해 주셔서 감사합니다. – jayAnn

답변

0

마침내 내 문제가 해결되었습니다. 버튼 btnEarn는 클릭이 때,

[{"ded_id":"10000000845","ded_code":"100","ded_desc":"MEAL ALL","taxable":"N","amount":"10"},{"ded_id":"10000000849","ded_code":"101","ded_desc":"TRANSPORTATION","taxable":"N","amount":"40"},{"ded_id":"10000000851","ded_code":"103","ded_desc":"LAUNDRY","taxable":"N","mOther_amnt":"50.00"}] 

이 데이터는 아약스 요청에서 출력했다, 예를 들어 내가 VAR tempInc에 저장된 데이터를 가지고 있다고 할 수 있습니다.

여기 내 btnEarn의 자바 스크립트 코드가 있습니다.

해당 버튼을 클릭 할 때마다 서버에 아약스 요청을 보냅니다. 반환 된 데이터 (객체의 배열을 가졌기 때문에 객체를 특정하게)는 전역 변수 tempInc에 저장됩니다. 그 후, 나는이 코드를 가지고있다.

$("#tblIncDed").jqGrid('setGridParam',{ 
    datatype: 'local', 
    data:tempInc} 
    ).trigger("reloadGrid"); 

that will display the tempInc in my jqgrid. Hope this will help someone out there. 
관련 문제