2011-04-27 4 views
2

방화 광에서 서버로 전달되는 매개 변수 값을 볼 수 없습니다. 여기에 코드가 있습니다.postData는 매개 변수를 전달하지 않습니다!


//BuyBackGridInit() start 

function BuyBackGridInit(tabID){ 


     $('table[id$="'+tabID+'_BuyBackGrid"]').jqGrid({ 
      url :'/Controls/Advertiser/BuyBackControlNew.ascx.ashx?action=getBuyBackData', 
      datatype: 'json', 
      mtype: 'POST', 
      height:'100%', 
      width:'100%', 
      colNames: result.colNamesData, 
      colModel: result.colModelData, 
      postData: { 
       advertiserID: function() { return $('#advertiser_id').text(); }, 
       CampaignsDdlSelectedValue: function() { return $('select[id$="CampaignDdl"] option:selected').val(); }, 
       startDate: function() { return $('input[id$="'+tabID+'_FromCalBuyBack_CalendarTbx"] ').val(); }, 
       endDate: function() { return $('input[id$="'+tabID+'_ToCalBuyBack_CalendarTbx"] ').val(); } 
      }, 
      rowNum : 100, 
      shrinkToFit :false, 
      altRows: true, 
      altclass:'altRow', 
      autowidth: true, 
      multiselect: true, 
      gridComplete:function(){ 
       var recs = parseInt($('table[id$="'+tabID+'_BuyBackGrid"]').getGridParam("records"),10); 
       if (recs == 0){ 
        $('div[id$="'+tabID+'_NoDataFoundBuyBackdiv"]').show(); 
        $('input[id$="AddToCartBtn"]').hide(); 
        $('input[id$="BuyBackDownloadBtn"]').hide(); 
       } 
       else { 
        $('div[id$="'+tabID+'_NoDataFoundBuyBackdiv"]').hide(); 
        $('input[id$="AddToCartBtn"]').show(); 
        $('input[id$="BuyBackDownloadBtn"]').show(); 
       } 
      }, 
      serializeGridData: function (data){ 
       return $.toJSON(data); 
      } 
     });//end of jQuery("#BuyBackGrid").jqGrid() 

}//BuyBackGridInit() End 

감사합니다,

답변

4

당신은 serializeGridData의 현재 구현 단지 postData에서 모든 기능 매개 변수를 제거합니다. 따라서 postData 대신 serializeGridData 안에 data 매개 변수를 확장해야합니다. 또 다른 방법은 다음과 serializeGridData을 수정하는 것입니다 : 코드에서

serializeGridData: function (data){ 
    var propertyName, propertyValue, dataToSend = {}; 
    for (propertyName in data) { 
     if (data.hasOwnProperty(propertyName)) { 
      propertyValue = data[propertyName]; 
      if ($.isFunction(propertyValue)) { 
       dataToSend[propertyName] = propertyValue(); 
      } else { 
       dataToSend[propertyName] = propertyValue 
      } 
     } 
    } 
    return JSON.stringify(dataToSend); 
} 

우리가 모든 속성을 열거하고 명시 적으로 모든 함수를 호출 위. 더욱 json2.js에서 JSON.stringify 기능을 사용하는 것을 선호합니다. 이 기능은 많은 웹 브라우저에서 구현됩니다.

here을 참조하십시오.

+0

@Oleg : serializeGridData를 사용자 코드로 교체했습니다. 이제 방화 광에서 서버로 전달되는 매개 변수를 볼 수 있습니다. 그것은 잘 작동합니다. 하지만 값을 변경하지 않습니다. 컨트롤에서 오래된 값을 계속 가져옵니다. postData를 생각했습니다.이 부분이 처리되어야합니다. 그러나 그렇지 않았습니다. 감사합니다. – user659469

+0

@ user659469 : "값을 변경하지 않지만 컨트롤에서 오래된 값을 계속 가져옵니다"라고 썼습니다. 미안하지만, 나는 어떤 통제와 어떤 가치관을 의미하는지 이해하지 못합니다. 또한 당신은 당신이 사용하는 HTML을 언제든지 게시하지 않습니다. – Oleg

+0

@Oleg : postData 부분에 매개 변수로 설정하는 제어 값을 말합니다. postData : { advertiserID : function() {return $ ('# advertiser_id'). text(); }, CampaignsDdlSelectedValue : function() {return $ ('select [id $ = "CampaignDdl"] 옵션 : 선택됨' '). }, startDate : function() {return $ ('input [id $ = "'+ tabID + '_ FromCalBuyBack_CalendarTbx"]') .val(); }, endDate : function() {return $ ('input [id $ = "'+ tabID + '_ ToCalBuyBack_CalendarTbx"]') .val(); } }, CampaignsDdlSelectedValue, endDate, startDate 모두 변경되지 않습니다! – user659469

관련 문제