我在我的 Web 应用程序中使用 jqgrid。使用 iOS 7,当我选择 jqgrid 表中的所有行并尝试将我的编辑保存到数据库中时,它不会保存。如果我只是编辑一行然后保存然后编辑另一行 - 基本上如果我一次编辑一行 - 那么它就可以工作。只是多行编辑不起作用。而且它只在 iOS 7 上不起作用。
我已经看过这篇文章:http ://www.trirand.net/forum/default.aspx? g=posts&m=13688 我已经将我的 jqgrid 更新到最新版本(4.5.4),我仍然有这个相同iOS 7 上的问题。
这是提交记录的javascript:
function submitChange(tabId) {
if (!submitFlag) return;
var records=[];
var $t = $("#" + tabId);
var selectedIds = $t.jqGrid('getGridParam','selarrrow');
var postData = $t.jqGrid("getGridParam", "postData");
if (selectedIds.length > 0) {
for (var i=0; i < selectedIds.length; i++){
updatedList[selectedIds[i]] = composeEditedRecord(selectedIds[i]); //Put edited record into updatedList
}
} else {
alert($T('missing.msg'));
return;
}
var z = 0;
for (var key in updatedList) {
if (typeof(updatedList[key].endDate) != 'undefined'
&& typeof(updatedList[key].endTypeId) != 'undefined') {
records[z] = updatedList[key];
z++;
} else {
alert($T('missing.msg'));
return;
}
}
if (records.length < $t.jqGrid('getGridParam', 'records')) {
alert($T('missing.msg'));
return;
}
$.extend(postData, {'updatedList': JSON.stringify(records)});
$.post('mse/end', postData, function(data) {
history.go(-1);
});
}
jquery 版本也是 1.5.1。
<link type="text/css" rel="stylesheet" href="css/jquery-ui-1.8.10.custom.css" />
<link type="text/css" rel="stylesheet" href="css/ui.jqgrid.css" media="screen" />
<link type="text/css" rel="stylesheet" href="css/ui.jqgrid.custom.css" media="screen" />
<script src="jquery/jquery.js" type="text/javascript" ></script>
<script src="jquery/ui/jquery-ui.js" type="text/javascript" ></script>
<script src="jquery/plugins/validate/jquery.validate.js" type="text/javascript" ></script>
<script src="jquery/plugins/jqgrid/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="jquery/plugins/jqgrid/jquery.jqGrid.min.js" type="text/javascript"></script>
这是 composeEditedRecord 函数:
function composeEditedRecord(id) {
var tmp = getEditableCells('mseTableEnd', id);
var editedRecord = updatedList[id];
if (!editedRecord) {
editedRecord = {};
editedRecord['id'] = id;
}
for (var key in tmp) {
if (key == 'tag')
editedRecord['TagPattern'] = tmp[key];
else
editedRecord[key] = tmp[key];
}
return editedRecord;
}
这是jqGrid的定义:
$("#mseTableEnd").jqGrid({
url: 'mse/list.json',
sortname: 'guisid',
colNames: mse.columnDisplayNames,
colModel: mse.colModelDef,
postData: filterValues,
onSelectRow: function(id,status){
if(status == true) {
$('#mseTableEnd').jqGrid('editRow',id,true);
$('#jqg_mseTableEnd_' + id).focus();
} else if(status == false) {
var tmp = getEditableCells('mseTableEnd', id);
var record = composeEditedRecord(id);
updatedList[id] = record; //Put edited record into updatedList when unchecked
$('#mseTableEnd').jqGrid('restoreRow',id);
$('#mseTableEnd').jqGrid('setRowData',id, tmp);
}
},
onSelectAll: function(aRowids, status) {
if (status){
for (var i = 0; i < aRowids.length; i++)
$('#mseTableEnd').jqGrid('editRow',aRowids[i],true);
$('#jqg_mseTableEnd_' + aRowids[i-1]).focus();
} else {
for (var i = 0; i < aRowids.length; i++) {
var tmp = getEditableCells('mseTableEnd', aRowids[i]);
var record = composeEditedRecord(aRowids[i]);
updatedList[aRowids[i]] = record; //Put edited record into updatedList when unchecked
$('#mseTableEnd').jqGrid('restoreRow',aRowids[i]);
$('#mseTableEnd').jqGrid('setRowData',aRowids[i], tmp);
}
}
},
gridComplete: function() {
$("#mseTableEnd").setColProp('tag',{editable:false});
var columnsToHide = [];
for (var i = 0; i <mse.colModelDef.length; i++) {
if (i > 12) columnsToHide.push(mse.colModelDef[i].name);
}
columnsToHide.push('generation');
$("#mseTableEnd").jqGrid('hideCol', columnsToHide);
$("#mseTableEnd").jqGrid('showCol', ['enddate' 'comment']);
},
loadComplete: function() {
var ids = $('#mseTableEnd').jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
$('#mseTableEnd').setSelection(ids[i]); // All selected by default
$('#'+ids[i]+' a').click(function(e) {
var myHash = e.currentTarget.hash; // string like "#?id=0"
if (myHash.substring(0,5) === '#?id=') {
var id = myHash.substring(5,myHash.length); // getting row Id
var url = appContext.contextPath + '/mse/edit.do?mseId=' + id;
hasPermissionByIds('Mse', id, 1, gotoPage, url);
}
e.preventDefault();
});
}
}
});
这是 getEditableCells 函数:
function getEditableCells(tabId, rowId) {
var $t = $("#" + tabId);
var ind = $t.jqGrid("getInd",rowId,true);
var cm, nm, tmp={};
$("td",ind).each(function(i) {
cm = $t.jqGrid('getGridParam', 'colModel')[i];
nm = cm.name;
if ( nm != 'cb' && nm != 'subgrid' && cm.editable===true && nm != 'rn') {
if (cm.edittype == "text") {
if ($("input, textarea",this).length > 0)
tmp[nm]=$("input, textarea",this).val();
else {
var rowData = $t.jqGrid('getRowData', rowId);
tmp[nm]=rowData[nm];
}
}
}
});
return tmp;
}
谁能帮我?