0

)、

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}}
            }
        );

助けてくれてどうもありがとう!

4

1 に答える 1