将JqGrid值发布到MVC控制器

时间:2016-08-25 08:46:01

标签: jquery asp.net-mvc jqgrid

我在JqGrid后面有一个复选框列:

$(document).ready(function() {
        $("#tblJQGrid").jqGrid({
            url: 'Home/GetDataForCompanyJqGrid',
            datatype: "json",
            mtype: 'GET',
            colNames: ['CompanyID', '', 'Offices'],
            colModel: [
            { name: 'CompanyID', index:'CompanyID', key:true, hidden:true},
            { name: 'check', index: 'check', width: 50, align: 'center', editable: true, edittype: 'checkbox', editoptions: {value: "True:False"}, formatter: "checkbox", formatoptions: {disabled: false}},
            { name: 'Description', index: 'CompanyName', width: 200, align: 'center' }],
            rowNum: 10,
            data: {},
            sortname: 'CompanyName',
            viewrecords: true,
            sortorder: "desc",
            height: "auto",
            caption: "List Offices:"});
    });

我的JqGrid包含一个复选框列,我想发布CompanyID列的值,如果行'选中复选框,到我的MVC控制器。我试图发布所有行'首先通过在我的html表单ActioResult中指定操作来为我的MCV action="@Url.Action("ExportData", "MyControler")"赋值,但我的ActionResult中只有null。 任何人都可以帮我理解如何将我的jqgrid中的值发布到我的MVC ActionResult中吗?

1 个答案:

答案 0 :(得分:0)

我建议您使用multiselect: true代替name: 'check'列。此外,您可以以非常简单的形式从控制器操作GetDataForCompanyJqGrid返回数据,例如,以下内容:

[
    {"CompanyID": 123, "CompanyName": "Company name 1"},
    {"CompanyID": 345, "CompanyName": "Company name 2"},
    ...
    {"CompanyID": 456, "CompanyName": "Company name N"}
]

并使用像

这样的代码
$("#tblJQGrid").jqGrid({
    url: 'Home/GetDataForCompanyJqGrid',
    datatype: "json",
    colNames: ['Offices'],
    colModel: [
        { name: 'CompanyName', width: 200, align: 'center' }
    ],
    multiselect: true,
    jsonReader: { id: "CompanyID" },
    rowNum: 1000, // no local paging
    viewrecords: true,
    height: "auto",
    caption: "List Offices:"
});

$(document).ready内。您可以使用$("#tblJQGrid").jqGrid("getGridParam", "selarrrow")获取所选项目的CompanyID数组。您可以在页面上添加一个按钮,然后将$("#tblJQGrid").jqGrid("getGridParam", "selarrrow")然后$.ajax信息用于服务器。你可以使用例如

var ids = $("#tblJQGrid").jqGrid("getGridParam", "selarrrow");
$.ajax({
    type: "POST",
    url: 'Home/ExportData',
    data: {
        selectedIds: ids.join() // send comma separated ids
        // ExportData action should have parameter with the name selectedIds
    }
});

请参阅the old answer以获取相应的代码示例。