.setPostData jqgrid无法正常工作

时间:2011-04-27 18:11:20

标签: jqgrid

我想用新参数重新加载jqgrid。我正在使用.setPostData()。请看下面我的代码。它总是在.setPostData()给我错误。我错过了什么?格式?

$('table[id$="'+tabID+'_BBGrid"]').jqGrid({ 
    url:'/Controls/Advertiser/BBControlNew.ascx.ashx?action=getBBData&advertiserID=' + $('#advertiser_id').text() + '&startDate=' + $('input[id$="' + tabID +
 '_FromCalBuyBack_CalendarTbx"] ').val() + '&endDate=' + $('input[id$="' + tabID + '_ToCalBuyBack_CalendarTbx"] ').val(),
    datatype: 'json',
    mtype: 'POST', 
    height:'100%',
    width:'100%',
    colNames: result.colNamesData, 
    colModel: result.colModelData,
    //pager: '#RequestLeadspager', 
    rowNum : 100,
    shrinkToFit :false,
...........
function  BuyBackGridReload(tabID,NoSelectedValues)
{
    $('table[id$="'+tabID+'_BuyBackGrid"]').setPostData({
        advertiserID:$('#advertiser_id').text(),
        CampaignsDdlSelectedValue: $('select[id$="CampaignDdl"] option:selected').val(),
        startDate: $('input[id$="'+tabID+'_FromCalBuyBack_CalendarTbx"] ').val(),
        endDate: $('input[id$="'+tabID+'_ToCalBuyBack_CalendarTbx"] ').val(),
        NoSelectedValue: NoSelectedValues
    }).trigger("reloadGrid");
};

我有搜索btn。我在搜索btn中获取NoSelectedValues的值。这是按钮点击的代码。 $( '输入[ID $ = “ '+ tabID +' _ BuyBackSearchBtn”]')。点击(函数(){

var values = [];

$('div[id$="' + tabID + '_SelectedBuyBackFilterDiv"] .children').each(function (){
     $(this).find('option').each(function (){
       var attr = $(this).attr('rel');
       if (typeof attr == 'undefined' ){
         values.push($(this).val());
       }
     });
});
BuyBackGridReload(tabID,values);

}); //结束搜索单击

ERROR:

  

$(“table [id $ = \”“+ tabID +   “_BuyBackGrid \”]“)setPostData({ADVERTISERID:   $( “#ADVERTISER_ID”)。文本()   CampaignsDdlSelectedValue:   $( “选择[ID $ = \” CampaignDdl \“]   选项:选中“)。val(),startDate:   $(“input [id $ = \”“+ tabID +   “_FromCalBuyBack_CalendarTbx \”]   “).val(),endDate:$(”input [id $ = \“”+   tabID +“_ ToCalBuyBack_CalendarTbx \”]   “).val(),NoSelectedValue:   NoSelectedValues})未定义

我也不想作为新参数的查询字符串传递。

有什么建议吗?

由于

A

1 个答案:

答案 0 :(得分:0)

您无需使用setPostData来设置postData参数。您可以改用setGridParam功能。请参阅here示例。

我想如果您使用包含函数的postData参数,则根本不需要设置任何postData参数。 jqGrid的urlpostData参数看起来像

url:'/Controls/Advertiser/BBControlNew.ascx.ashx",
postData: {
    action: "getBBData"
    advertiserID: function() { return $('#advertiser_id').text(); },
    startDate: function() { return $('input[id$="' + tabID + '_FromCalBuyBack_CalendarTbx"] ').val(); },
    endDate: function() { return $('input[id$="' + tabID + '_ToCalBuyBack_CalendarTbx"] ').val(); },
    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(); },
    NoSelectedValue: function() { return NoSelectedValues; }
}

必须先定义变量tabIDNoSelectedValues。在每个网格上重新加载每个postData属性的函数将被调用,您可以从相应的控件中读取当前值。