我在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中吗?
答案 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以获取相应的代码示例。