jqgrid将参数传递给方法

时间:2013-01-15 01:32:04

标签: c# asp.net-mvc jqgrid

我有以下示例:

      var url = '@Url.Action("GetProgData", "Prog")' + '?lbId=' + labId;        

      $("#loginList").jqGrid({
       url: url,
       datatype: "json",
       colNames: ['PNum', 'Client', 'Salesperson', 'Email'],
       colModel: [ ...
       ......

该方法在c#MVC中如下所示:

     public JsonResult GetLoginData(int rows, int page, string sidx, string sord, string searchField, string searchString, string searchOper, int? labId)

我喜欢做的是有条件地传递labId的值,所以我有以下但是似乎没有传递labId,因为它返回null:

       $("#LabId").change(function () {
        labId = $("#LabId").val();
        setupGrid(labId);
        $("#loginList").trigger("reloadGrid", [{ page: 1}]);
       });

不确定当我在下拉列表中执行此操作时,labID的值不会很好

1 个答案:

答案 0 :(得分:2)

我认为您可以发送null作为labId的值{/ p>

$("#loginList").jqGrid({
    url: '@Url.Action("GetProgData", "Prog")',
    postData: {
        lId: function () {
            var labId = $("#LabId").val();
            return labId === "" ? null : labId;
        }
    },
    datatype: "json",
    colNames: ['PNum', 'Client', 'Salesperson', 'Email',
    ...
});

如果上述解决方案不起作用,则可以执行以下操作

$("#loginList").jqGrid({
    url: '@Url.Action("GetProgData", "Prog")',
    serializeGridData: function (data) {
        var labId = $("#LabId").val();
        return labId === "" ? data : $.extend(true, {}, data, {lId: labId});
    },
    datatype: "json",
    colNames: ['PNum', 'Client', 'Salesperson', 'Email',
    ...
});