当使用JQuery网格ajax调用绑定网格数据时,参数传递为'null'

当使用JQuery网格ajax调用绑定网格数据时,参数传递为'null'

问题描述:

我有一个JQuery网格,我使用ajax调用绑定到控制器。 控制器方法在ajax调用期间被击中,但参数值作为控制器方法传递为null。当使用JQuery网格ajax调用绑定网格数据时,参数传递为'null'

的parametre值在AJAX性能'data:'

这里正确绑定是我的JavaScript代码:

function BindGridData() 
    { 


     var BUids=$("#ddlBU").val().join(","); 

     var Zoneids=$("#ddlZone").val().join(","); 
     var Regionsids=$("#ddlRegion").val().join(","); 
     var Territoryids=$("#ddlTerritory").val().join(","); 
     $("#tblJQGrid").jqGrid(
     {url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")", 
      datatype: "json", 
      data: "{BUIds :'" + BUids + "',ZoneIds:'"+Zoneids+"',RegionIds:'"+Regionsids+"',TerritoryIds:'"+Territoryids+"'}", 
      mtype: 'GET', 
      colNames: ['Id','GeoGraphy', 'Completed', 'InProgress'], 
      colModel: [ 
      { name: 'Id', index: 'Id', width: 20, stype: 'text',hidden:true }, 
      { name: 'Geography', index: 'Geography', width: 150 }, 
      { name: 'Completed', index: 'Completed', width: 150 }, 
      { name: 'InProgress', index: 'InProgress', width: 150 }, 
      ],rowNum: 10, 
      sortname: 'Id', 
      viewrecords: true, 
      sortorder: "desc", 
      caption: "Geographical Survey Status", 
      scrollOffset: 0}); 

     var res=$('#ddlResponseType').val(); 
     res=res.join(','); 
     if(res=='1') 
     { 
      $("#tblJQGrid").hideCol("Completed"); 
     } 
     else if(res == '2') 
     { 
      $("#tblJQGrid").hideCol("InProgress"); 
     } 
     else 
     { 
      $("#tblJQGrid").showCol("InProgress"); 
      $("#tblJQGrid").showCol("Completed"); 
     } 

    } 

这里是我的控制器方法

public string GetGeographyBreakUpData(string BUIds, string ZoneIds, string RegionIds, string TerritoryIds, string MarketIds, string FOIds, string ResponseTypeIds, string FromDate, string ToDate, string GridBreakUpLevel) 
{ 
} 

有人能告诉我在哪里我代码有问题?

UPDATE 我曾尝试使用Params数组发送的值, 即使再Params数组传递作为null

这里是更新的代码

var BUids=$("#ddlBU").val(); 
var Zoneids=$("#ddlZone").val(); 
var Regionsids=$("#ddlRegion").val(); 
var Territoryids=$("#ddlTerritory").val(); 
Params = new Array(); 
Params.push(BUids); 
Params.push(Zoneids); 
Params.push(Regionsids); 
Params.push(Territoryids); 
Params = Params.join("|"); 

$("#tblJQGrid").jqGrid(
    {url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")", 
     datatype: "json", 
     data: { "Parameters": Params }, 
     mtype: 'GET', 
     colNames: ['Id','GeoGraphy', 'Completed', 'InProgress'], 
     colModel: [ 
     { name: 'Id', index: 'Id', width: 20, stype: 'text',hidden:true }, 
     { name: 'Geography', index: 'Geography', width: 150 }, 
     { name: 'Completed', index: 'Completed', width: 150 }, 
     { name: 'InProgress', index: 'InProgress', width: 150 }, 
     ],rowNum: 10, 
     sortname: 'Id', 
     viewrecords: true, 
     sortorder: "desc", 
     caption: "Geographical Survey Status", 
     scrollOffset: 0}); 

控制器

public string GetGeographyBreakUpData(string Parameters) 
{ 
} 

即使这样也行不通。

+0

林不知道'数据属性在这里由网格使用。你能够建立与搜索参数的网址,并尝试? – Searching

+0

@Searching那么我如何传递没有数据属性的参数? –

+0

啊哟试试这个快速和脏的检查,看看是否传递参数,'“@ Url.Action(”GetGeographyBreakUpData“,”GeoMap“)”+“?BUIds ='”+ BUids +“'”'。你能够分享'ActionResult GetGeographyBreakUpData(...)'?只是方法签名.. – Searching

据我所知,由于datatype: jsondata属性无法形成查询字符串参数。不是因为这是不正确的,但它可能转换它为content-type "application/x-www-form-urlencoded"

我怀疑processData属性可能是失败的原因。我几乎没有尝试过支持这一点,如果他们发现其他问题,我可以让他们编辑这个答案。

至于如果我发现更多的东西,我会在this.Just更新我们设置在传统的方式

url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"+"?BUIds='"+ BUids + "'&ZoneIds='"+Zoneids+"'&RegionIds='"+Regionsids+"'&TerritoryIds='"+Territoryids+"'"

参数的问题想分享这个jQuery.param()