【问题标题】:.setPostData jqgrid not working.setPostData jqgrid 不工作
【发布时间】:2011-04-27 18:11:20
【问题描述】:

我想用新参数重新加载 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 的值。这是按钮单击的代码。 $('input[id$="'+tabID+'_BuyBackSearchBtn"]').click(function(){

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

}); //结束搜索点击

错误:

$("table[id$=\"" + tabID + "_BuyBackGrid\"]").setPostData({advertiserID: $("#advertiser_id").text(), CampaignsDdlSelectedValue: $("select[id$=\"CampaignDdl\"] 选项:已选择").val(),开始日期: $("输入[id$=\"" + tabID + "_FromCalBuyBack_CalendarTbx\"] ").val(), endDate: $("input[id$=\"" + tabID + "_ToCalBuyBack_CalendarTbx\"] ").val(), NoSelectedValue: NoSelectedValues}) 未定义

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

有什么建议吗?

谢谢

一个

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    您不需要使用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 属性重新加载函数都会被调用,您可以从相应的控件读取当前值。

    【讨论】:

    • 谢谢奥列格。 setGridParam 工作正常。这是代码。 $('table[id$="'+tabID+'_BuyBackGrid"]').jqGrid('setGridParam', {postData:{NoSelectedValue:NoSelectedValues} }).trigger("reloadGrid");
    • @user659469:是的,它可以工作,但您也可以设置NoSelectedValues 变量,该变量将在postData.NoSelectedValue 函数内部使用。您没有发布足够的代码,但我想您可以直接在NoSelectedValue: function() {/*here*/} 内部计算NoSelectedValues 的值。查看here了解更多信息。
    • @Oleg 。按照您建议的第二种方法,我没有看到任何参数传递给处理程序。 $('table[id$="'+tabID+'_BuyBackGrid"]').jqGrid({ url :'/Controls/Advertiser/BuyBackControlNew.ascx.ashx?action=getBuyBackData', 数据类型: 'json',mtype: ' POST',postData: {advertiserID: function() { return $('#advertiser_id').text(); }, startDate: function() { return $('input[id$="'+tabID+'_FromCalBuyBack_CalendarTbx"] ').val(); },endDate: function() { return $('input[id$="'+tabID+'_ToCalBuyBack_CalendarTbx"] ').val(); }} },我没有看到任何这些参数值在 firebug 中。谢谢
    • @user659469:你指的是哪个“参数”? advertiserIDstartDate等参数不会发送到服务器吗?可能你在serializeGridData 事件句柄中覆盖了那里?如果问题还没有解决,你应该在你的问题后面加上你使用的 jqGrid 的更完整的定义。
    • @Oleg:我已经编辑了原始问题。因此,现在您将弄清楚我如何以及从何处获得 NoSelectedValues。当我点击“search btn”时,我需要将新参数传递给服务器。谢谢。
    猜你喜欢
    • 2012-11-03
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多