想法:我在jqGrid中加载数据。用户可以选择多行并通过单击存储按钮导入它们。数据存储在服务器上 并修改状态列。发布后,jqGrid已实现。
问题:发布到服务器后,页面刷新并且jqGrid刷新(它调用GetData方法)但网格不再显示任何行。
查看部分:
@using (Html.BeginForm("Import", "MyData", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input type="hidden" name="dataRow" id="dataRow" />
<button id="storeSelected" type="submit" name="submitButton" value="StoreSelected" class="btn btn-default">Store Selected</button>
}
<table id="importGrid"></table>
<div id="importPager"></div>
脚本部分:
var lastsel;
var configUrl = '@Url.Action("GetData", "MyData")';
var editUrl = '@Url.Action("UpdateData", "MyData")';
jQuery("#importGrid").jqGrid({
url: configUrl,
datatype: "json",
editurl: editUrl,
colNames: ['Import State', 'Start', 'End', 'Description'],
colModel: [
{ name: 'ImportState', index: 'ImportState', width: 40, sortable: true },
{ name: 'Start', index: 'Start', formatter: 'date' },
{ name: 'End', index: 'End', formatter: 'date' },
{ name: 'Description', index: 'Description', width: 150, sortable: false, editable: true },
onSelectRow: function(id) {
if (id && id !== lastsel) {
jQuery("#importGrid").jqGrid('saveRow', lastsel, false);
jQuery('#importGrid').jqGrid('editRow', id, true);
lastsel = id;
}
},
...
});
$('#storeSelected').click(function() {
var multiplerowdata = jQuery("#importGrid").getGridParam('selarrrow');
$('#dataRow').val(multiplerowdata);
});
控制器部分:
public ActionResult Import(
MyViewModel viewModel,
string datarow,
string submitButton)
{
if (submitButton == "StoreSelected")
{
... // Does the import
}
}
public ActionResult GetData()
{
return Json(_Data, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:0)
两个晚上后我终于找到了这个虫子! jqGrid的一切都没问题。问题是我导入了 通过我的O / R Mapper将数据存入我的数据库,并将jqGrid混淆 清爽。
因此,对我来说,总是使用正确的ViewModel也是一个教训 当实体看起来很简单。希望这对其他人有一次帮助。