jqGrid postdata发送空值(mvc3 asp / net)

时间:2012-06-26 07:48:59

标签: asp.net asp.net-mvc-3 jqgrid

jqGrid不会将postdata发送到我的控制器。我在stackoverflow上尝试了所有提供的解决方案,显然我买错了。所以这是代码:


     function refreshGrid() {
        alert('CompanyNamePart=' + $("#CompanyNamePart").val()); // to check if this is correct value
        $("#list").trigger('reloadGrid');
        return false;
    }

    $(function () {
        var grid = jQuery("#list").jqGrid({
            datatype: 'json',
            caption: 'Transaction Log',
            postdata: {
                CompanyNamePart: function () { return $("#CompanyNamePart").val(); },
                UsernamePart: function () { return $("#UsernamePart").val(); },
            },
            url: '@Url.Action("GetTransactionLogData")',
            mtype: 'GET',
            colNames: ['Ref.', 'TradeDate', 'Status'],
            colModel: [
                { name: 'Reference', index: 'Reference', width: '60' },
                { name: 'TradeDate', index: 'TradeDate', width: '70' },
                { name: 'Status', index: 'Status', width: '80' }
            ],
            pager: $('#pager'),
            rowNum: 10,
            height: '100%'
        });
    });


在控制器端,我有简单的代码:

[HttpGet]
        public ActionResult GetTransactionLogData(string sidx, string sord, int page, int rows,  string CompanyNamePart, string UsernamePart)
        { return Json(null); }

并且在调试模式下,当我通过单击按钮调用refreshGrid()时,我得到一个警报以确认它正确读取textfield的值,然后刷新网格。我收到控制器的调用,但是CompanyNamePart和UsernamePart变量的值都是null,即使我填充它们。

我尝试了另一种方法的postdata部分的另一个解决方案,首先我创建了返回所需值的函数并将它们放在网格的postdata部分中:

    function getCompanyNamePartVal() {
        return $("#CompanyNamePart").val();
    }

    function getUsernamePartVal() {
        return $("#UsernamePart").val();
    }

... in jqgrid definition
    postdata: {
                CompanyNamePart: getCompanyNamePartVal(),
                UsernamePart: getUsernamePartVal(),
            },

但没有成功。

当我检查Firebug时,我发现jqGrid没有发送postdata值:

Get Parameters caught by Firebug
_   1340696638960
_search false
nd  1340696638955
page    1
rows    10
sidx    
sord    asc

我做错了什么?

2 个答案:

答案 0 :(得分:3)

该参数名为postData,而不是postdata。别忘了javascript是一种区分大小写的语言。所以试试这样:

postData: {
    CompanyNamePart: function () { return $("#CompanyNamePart").val(); },
    UsernamePart: function () { return $("#UsernamePart").val(); }
}

另请注意,我在代码中使用的UsernamePart函数后删除了一个尾随逗号,该函数生成了无效的javascript。一些更敏感的浏览器可能不接受它。

答案 1 :(得分:0)

$("#grid").jqGrid({
        url: "/DocumentoBalanza/GetBalanzaEmpresaMes",
        //postData: JSON.stringify(formDataParam),
        postData : {
            id: function () { return formDataParam.id; },
            strDate: function () { return formDataParam.strDate; },
        },
        datatype: 'json',
        mtype: 'GET',

public JsonResult GetBalanzaEmpresaMes(string sidx, string sord, int page, int rows, int id, string strDate)

代码确定。