)、
jqGrid でのインライン編集の使用に問題があります。一部のグリッドをフォーム編集からインライン編集に切り替えています。インライン編集の仕組みは正常に機能しますが、保存時に追加データをサーバーに送り返そうとしています (フォーム編集を使用していたときに postData を使用してこれを行いました)。追加のデータを送り返すように editParams を設定しました。これは、編集鉛筆をクリックしてレコードを編集し、ナビゲーション バーの保存アイコンをクリックして保存すると機能します。ただし、keys: true を設定すると、Escape/Enter を使用してレコードをキャンセル/保存したり、行をダブルクリックしてレコードの編集を開始したりすると、editParams が処理されない/サーバーに送信されないことに気付きました。 . これは、編集ボタンのクリック イベントで editParams が設定されているためだと思います。
何か不足していますか?私のコードを修正する際の助けに感謝します。
ここに私のグリッドコードがあります:
jQuery(document).ready(function() {jQuery('#grdRateEntries')
.jqGrid({
url: 'myUrl',
mtype: 'POST',
datatype: 'xml',
loadonce: false,
editurl: 'myEditUrl',
colNames: [
'ID', '', 'Type', 'Reported', 'Actual', 'Notes', 'Available', 'Paid', 'RateID'],
colModel: [
{name: 'id', index:'id', hidden:true, editable:false, key:true},
{ name: 'act', index: 'act', width: ($.browser.webkit ? 40 : 35), align: 'center', sortable: false, formatter: 'actions',
formatoptions: {
keys: false, // we want to use [Enter] key to save the row and [Esc] to cancel editing.
//delOptions: myDelOptions
delbutton: false,
editbutton: false
}
},
{name:'ddlType', index:'ddlType', width:200, editable:true, edittype:'select', editrules:{required:true}, editoptions:{label:'Type', dataInit:function(el){InitType(el);}, value:':-- Select --;' }},
{name:'ReportedUnits', index:'ReportedUnits', width:200, editable:true, editoptions:{size:10}, editrules:{number:true, required:true}},
{name:'ActualUnits', index:'ActualUnits', width:200, editable:true, editoptions:{size:10}, editrules:{number:true, required:true}},
{name:'Notes', index:'Notes', width:200, editable:true, editrules:{required:true}, editoptions:{rows:'2', cols:'30'}, edittype:'textarea'},
{name:'Available', index:'Available', edittype:'checkbox', width:100, editable:true},
{name:'Paid', index:'Paid', edittype:'checkbox', width:100, editable:false, editoptions:{size:25}},
{name:'TypeID', index:'TypeID', hidden:true, editable:false}
],
recreateForm: false,
multiselect: false,
multiboxonly: false,
pager: jQuery('#pggrdRateEntries'),
rowNum:10,
rownumbers:true,
rowList:[5, 10, 20, 50],
sortname:'Id',
sortorder:'ASC',
viewrecords:true,
grouping:false,
imgpath:'',
caption:'',
autowidth:true,
shrinktofit:false,
toolbar: [true, 'top'],
postData:{entityId:1,employeeid:24,clientid:6},
ondblClickRow: function(id)
{
if(id){ jQuery('#grdRateEntries').jqGrid('restoreRow',lastSel); jQuery('#grdRateEntries').jqGrid('editRow',id,true); lastSel=id; }
},
loadComplete: function()
{
grid.setGridHeight('auto');
grid.setGridWidth(700, false);
var iCol = GetColumnIndexByName($('#grdRateEntries'), 'act');
$(this).find('>tbody>tr.jqgrow>td:nth-child(' + (iCol + 1) + ')')
.each(function(ndx) {
$('<div>', {
title: 'Set Actual=Reported',
mouseover: function() {
$(this).addClass('ui-state-hover');
},
mouseout: function() {
$(this).removeClass('ui-state-hover');
},
click: function(e) {
var selRowId = $(this).parents('tr').attr('id'); //$('#grdRateEntries').jqGrid('getGridParam', 'selrow');
var reportedVal = $('#grdRateEntries').jqGrid('getCell', selRowId, 'ReportedUnits');
$('#grdRateEntries').jqGrid('setCell', selRowId, 'ActualUnits', reportedVal);
}
}
).css({'margin-right': '5px', float: 'left', cursor: 'pointer'})
.addClass('ui-pg-div ui-inline-custom')
.append('<span class="ui-icon ui-icon-copy"></span>')
.prependTo($(this).children('div'));
});
}
});
$('#grdRateEntries').navGrid(
'#pggrdRateEntries',
{
add: false,
edit: false,
del: true,
refresh: true,
search: false,
view: false,
edittitle: 'Edit selected record',
addtitle: 'Add new record',
deltitle: 'Delete selected record',
cloneToTop:true,
closeOnEscape:true
}, // use default settings
grdRateEntrieseditOptions,
grdRateEntriesaddOptions,
grdRateEntriesdeleteOptions, // use default settings for delete
grdRateEntriessearchOptions
);
$('#grdRateEntries').jqGrid('inlineNav',
'#pggrdRateEntries',
{
editParams: {keys: false, extraparam: {entityId:1,employeeid:24,clientid:6}}
}
);
助けてくれてどうもありがとう!