我有一个JQGrid具有自定义设置来编辑和保存行数据更改但是我有点困惑。我的选择中的数据没有出现在我的帖子中,我可以在编辑一行时选择另一行,这会改变当前所选行的值并将错误引入编辑过程。
$.ajax({
type: 'POST',
url: '/myserver/myservice.asmx/GetMyData',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: params
}).success(function(data) {
clearNotSatisifiedConcessionList();
var rowid;
var response = data.d;
if (response.length > 0) {
$('p.infotext').html('<span class="ui-icon ui-icon-info"></span><strong>Information: </strong>Click a row, then click <b><i>Edit</i></b>');
var lastsel2;
var grid = $("#myList").jqGrid({
datatype: "local",
data: response,
height: '100%',
autowidth: true,
hidegrid: false,
ajaxSelectOptions: { type: "POST", contentType: 'application/json; charset=utf-8', dataType: 'json' },
colNames: ['ID', 'Date', 'col1', 'col2', 'col3'],
colModel: [
{ name: 'ID', index: 'ID', width: 20 },
{ name: 'Date', index: 'Date', width: 30, sorttype: 'date', formatter: 'date', formatoptions: { srcformat: 'd/m/Y', newformat: 'd/m/Y' }, datefmt: 'd/m/Y' },
{ name: 'col1', index: 'col1', width: 20 },
{ name: 'col2', index: 'col2', width: 25, sorttype: 'int' },
{ name: 'col3', index: 'col3', width: 35, sorttype: 'int' }
],
pager: '#MyPager',
rowNum: 15,
editurl: '/myserver/myservice.asmx/SaveMyData',
editData : {"SmodifiedByPersonRef":getCurrentUserPersonRef(), "modifiedByPostRef": getCurrentUserPostRef()},
sortname: 'Date',
sortorder: 'desc',
viewrecords: true,
gridview: true,
caption: ''
});
} else {
clearList();
$('p.infotext').html('<span class="ui-icon ui-icon-info"></span><strong>Information: </strong>No data found');
}
}).error(function(jqXHR, textStatus, errorThrown) {
errorHandler(errorThrown, 'List', 'Load List');
});
这是我编辑选择和取消功能上方的列表
$("#editRow").click(function(event) {
event.preventDefault();
var selectedRow = $('#myList').jqGrid('getGridParam', 'selrow');
if (selectedRow === null) {
alert('No row Selected!');
}else {
$("#myList").jqGrid('editRow', selectedRow);
$(".editButton").hide();
$(".saveButton").show();
$(".cancelButton").show();
}
});
$("#saveRow").click(function(event) {
event.preventDefault();
var selectedRow = $('#myList').jqGrid('getGridParam', 'selrow');
var coincessionId = $("#myList").getCell(selectedRow, "ID");
$("#myList").jqGrid('saveRow', coincessionId);
$(".saveButton").hide();
$(".cancelButton").hide();
$(".editButton").show();
});
$("#cancelEdit").click(function(event) {
event.preventDefault();
var selectedRow = $('#myList').jqGrid('getGridParam', 'selrow');
$("#myList").jqGrid('restoreRow', selectedRow);
$(".saveButton").hide();
$(".cancelButton").hide();
$(".editButton").show();
});
有人做过类似的解决方案,因为拖网互联网尚未提供给我答案,任何问题或评论请不要犹豫,但请考虑到此代码有很多编辑由于性质此列表将出现在其中的应用程序。
答案 0 :(得分:0)
我添加了处理程序,在编辑时将rowid添加到窗口变量,并在取消时检查此变量并保存,确保当前选择的行是最初选择的行,这似乎有效,但是是松散的解决方法