post 后 jqGrid 不刷新
jqGrid does not refresh after post
想法:我在 jqGrid 中加载我的数据。用户可以 select 多行并通过单击存储按钮导入它们。数据存储在服务器上
并修改状态列。发布后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);
}
折腾了两个晚上终于找到bug了! jqGrid 一切都很好。问题是我导入了
通过我的 O/R Mapper 和混淆的 jqGrid 将数据发送到我的数据库
刷新的同时。
所以这对我来说是一个教训,让我始终正确使用 ViewModels,还有
当 Entity 看起来很简单的时候。希望这对其他人有帮助。
想法:我在 jqGrid 中加载我的数据。用户可以 select 多行并通过单击存储按钮导入它们。数据存储在服务器上 并修改状态列。发布后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);
}
折腾了两个晚上终于找到bug了! jqGrid 一切都很好。问题是我导入了 通过我的 O/R Mapper 和混淆的 jqGrid 将数据发送到我的数据库 刷新的同时。
所以这对我来说是一个教训,让我始终正确使用 ViewModels,还有 当 Entity 看起来很简单的时候。希望这对其他人有帮助。