【发布时间】:2017-01-01 14:39:30
【问题描述】:
我有以下带有复选框列的 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 表单 action="@Url.Action("ExportData", "MyControler")" 中指定一个操作,首先将所有行的值发布到我的 MCV ActioResult,但我的 ActionResult 中只得到空值。
谁能帮助我了解如何将值从我的 jqgrid 发布到我的 MVC ActionResult?
【问题讨论】:
-
您的问题并不完全清楚。您是否使用来自服务器的某些值填充
check,或者最初未选中所有复选框并且用户应该选择某人并且您需要将选定的 CompanyID 发送到服务器?我想您应该删除name: 'check'列并添加multiselect: true选项。您使用rowNum: 10而没有loadonce: true选项。您是否在'Home/GetDataForCompanyJqGrid'中实现了服务器端分页?如果它返回多于 10 行会怎样?'Home/GetDataForCompanyJqGrid'返回的数据是哪种格式的? -
如果从
'Home/GetDataForCompanyJqGrid'返回的数据格式类似于{"CompanyID": 123, "CompanyName": "some name"}的项目数组,那么您可以删除CompanyID列并使用jsonReader: { id: "CompanyID" }。每个网格行(<tr>元素)都有id属性(rowid)。如果来自CompanyID的值是唯一的,那么最好将这些值用作rowid。您可能会有只有一列的网格。 -
您使用(必须使用)哪个版本的 jqGrid 以及来自哪个 jqGrid 分支(free jqGrid、商业Guriddo jqGrid JS 或版本 GetDataForCompanyJqGrid 代码可以非常简单,JavaScript 也非常简单,您需要使用
loadonce: true, multiselect: true, forceClientSorting: true, multiPageSelection: true。以the demo为基础。 -
是的,复选框最初没有被选中,用户必须选择一些,然后我想将选定的 CompanyID 发送到服务器。不需要分页,因为不会超过 6 行。我首先从数据库中读取 jqgrid 数据,也许这些信息对您有帮助,因为关于数据格式的问题。对不起,如果我不能给你尽可能多的详细信息,但这是我第一个使用 mvc、jqgrid 等的项目。
标签: jquery asp.net-mvc jqgrid