【发布时间】:2017-09-26 14:37:03
【问题描述】:
我正在使用免费的 jqgrid 来编辑描述列表。这可以按我的意愿工作,但我找不到如何通过对服务器的 Ajax 调用来持久化这些更改。
<div id="divLoading" class="has-error">Loading ...</div>
<table id="grid"></table>
<div id="pager"></div>
$(function () {
var data = GetHiddenField("sir-standard-faults-for-category");
populateGrid(data.FaultCategoryDetails);
});
var populateGrid = function (data) {
var grid = $("#grid");
var lastSel = 0;
grid.jqGrid({
data: data,
colNames: ["FaultCategoryDetailId", "Fault"],
colModel: [
{ name: "FaultCategoryDetailId", index: "FaultCategoryDetailId", width: 65, align: "center", hidden: true, key: true },
{ name: "Description", label: "Description", width: 500, align: "center", editable: true }
],
cmTemplate: { autoResizable: true, align: "center" },
rowNum: 20,
pager: "#pager",
shrinkToFit: true,
rownumbers: true,
sortname: "Description",
viewrecords: true,
onSelectRow: function (FaultCategoryDetailId) {
if (FaultCategoryDetailId && FaultCategoryDetailId !== lastSel) {
jQuery("#grid").restoreRow(lastSel);
lastSel = FaultCategoryDetailId;
}
jQuery("#grid").editRow(FaultCategoryDetailId, true);
},
oneditfunc: function() { alert("put ajax call here?"); }
});
grid.jqGrid("filterToolbar", {
beforeSearch: function () {
return false; // allow filtering
}
}).jqGrid("gridResize");
$("#divLoading").hide();
}
编辑 2: 这是对上一次编辑的更正,尽管这个也不起作用;我把 oneditfunc: function() { alert("editsave"); } 在代码中,目的是在编辑行后捕获“输入”事件。我不知道这是否在 jqGrid 的免费版本中,因为它不起作用。或者更可能是错误的。
【问题讨论】:
-
对不起,我不明白你的问题。 1)您在页面上显示“#divLoading”。为什么你需要它?至少它最初应该有
style="display: none;"。 2) 您的代码不包含任何 Ajax 请求。你想坚持什么? 3) 您仅在本地编辑数据。是要将修改后的行保存到服务器还是计划稍后获取修改后的网格数据并将新数据发送回服务器? -
1/ “#divLoading”用于显示“正在加载”,直到网格中的数据被渲染。真的与这个问题无关。 2/ 我不知道将 Ajax 请求放在哪里,这就是它不存在的原因, 3/ 是的,除了在本地保存数据之外,我还想对服务器进行 AJAX 调用以同时保留更改数据保存在本地。我希望这可以澄清?
-
我想编辑并保留 Description 字段,这意味着我还需要在 AJAX 调用中发送 FaultCategoryDetailId。
-
所以我想要的是,当我编辑一个单元格并按回车键保存更改时,我想触发一个事件,该事件将使 ajax 调用保持更改。
标签: jquery ajax jqgrid free-jqgrid