以下のコードは、フォームを使用して行を追加する場合の新しい行のデフォルト値を設定します。 ツールバーからjqGridインライン追加ボタンを使用して行を追加すると、これらのメソッドは呼び出されず、 のデフォルト値は設定されません。jqgridのインライン追加ボタンを使用して行を追加する場合のデフォルト値の設定方法
インラインでの追加で、以下のコードと同じロジックを実行する方法を教えてください。
var lastSelectedRow;
$grid.navGrid("#grid_toppager", {
del: true,
add: true,
view: true,
edit: true
},
{},
{
addedrow: 'beforeSelected',
url: '/Grid/Add?_entity=Desktop',
beforeInitData: function() {
// todo: how to call this method from inline add
var rowid = $grid.jqGrid('getGridParam', 'selrow');
if (rowid === null) {
alert('Select row before adding');
return false;
}
},
afterShowForm: function(formID) {
// todo: how to set default values as this method sets from inline add
var selRowData,
rowid = $grid.jqGrid('getGridParam', 'selrow');
$('#' + 'Recordtype' + '.FormElement').val('Veerg');
$('#' + 'Nait2' + '.FormElement')[0].checked = true;
selRowData = $grid.jqGrid('getRowData', rowid);
$('#' + 'Baas' + '.FormElement').val(selRowData.Baas);
$('#' + 'Liigid' + '.FormElement').val(selRowData.Liigid);
}
);
$grid.jqGrid('inlineNav', '#grid_toppager', {
addParams: {
position: "beforeSelected",
rowID: '_empty',
useDefValues: true,
addRowParams: {
keys: true,
onEdit : onInlineEdit
}
},
editParams: {
editRowParams: {
onEdit : onInlineEdit
}
},
add: true,
edit: false,
save: true,
cancel: true
});
function onInlineEdit(rowId) {
if (rowId && rowId !== lastSelectedRow) {
cancelEditing($grid);
lastSelectedRow = rowId;
}
}
更新
私は、FUNCが呼び出されるだけoneditfuncコード
$grid.jqGrid('inlineNav', '#grid_toppager', {
addParams: {
position: "beforeSelected",
rowID: '_empty',
useDefValues: true,
addRowParams: {
keys: true,
extraparam: { _dokdata: FormData },
onSuccess : function (jqXHR) {
alert('addp oncuss');
jqXHRFromOnSuccess=jqXHR;
return true;
},
afterSave: function (rowID) {
alert('afeesave addp ');
cancelEditing($grid);
afterDetailSaveFunc(rowID,jqXHRFromOnSuccess);
jqXHRFromOnSuccess=null;
},
onError: errorfunc,
afterRestore : setFocusToGrid,
oneditfunc : function (rowId) {
var selRowData, selRowId ;
if (rowId && rowId !== lastSelectedRow) {
cancelEditing($grid);
selRowId = $grid.jqGrid('getGridParam', 'selrow');
if (selRowId) {
selRowData = $grid.jqGrid('getRowData', selRowId);
$('#' + rowId + '_Reanr').val(selRowData.Reanr);
}
lastSelectedRow = rowId;
}
}
}
}
);
を試してみました。 onSuccess、afterSave、onErrorなどのメソッドを強制的に呼び出す方法
アップデート2
私は答えで推奨githubのからjqGridにパッチを追加し、インライン追加Iこの場合は、入力を終了しない
$.extend(jQuery.jgrid.inlineEdit, {
addParams: {
position: "beforeSelected",
rowID: '<%= EntityBase.NewRowIdPrefix %>',
useDefValues: true,
addRowParams: {
keys: true,
extraparam: { _dokdata: FormData },
onSuccess : function (jqXHR) {
jqXHRFromOnSuccess=jqXHR;
return true;
},
afterSave: function (rowID) {
cancelEditing($grid);
<% if (Model is RowBase) { %>
afterDetailSaveFunc(rowID,jqXHRFromOnSuccess);
<% } else { %>
afterGridSaveFunc(rowID,jqXHRFromOnSuccess);
<% } %>
jqXHRFromOnSuccess=null;
},
onError: errorfunc,
afterRestore : setFocusToGrid,
oneditfunc : function (rowId) {
if (rowId && rowId !== lastSelectedRow) {
cancelEditing($grid);
lastSelectedRow = rowId;
}
}
}
}
});
を試してみました。このコードのすべてのパラメータは無視されます。
ありがとうございます。問題のコードは現在の行からデフォルト値を取得し、現在の行が設定されていない場合は行を追加できません。 defaultValueを使用してこれを実装する方法は? – Andrus
@Andrus:まさにコードが違ったことをする。 val( 'Veerg');および$( '#' + 'Nait2' + '.FormElement')[0] .checkedのような行は '$ ' = true; 'はデフォルト値の純粋な設定です。他の設定のために、なぜあなたは 'onEdit'ハンドラの中の設定を(あなたのケースでは' onInlineEdit'関数内で)しないのか分かりません。 – Oleg
現在の行から値を取得する必要があります。私はonInlineEditで現在の行の値を取得する方法を知らない。おそらく、現在の行が既に追加されています。前の行の値を取得する方法はありません。また、現在の行がない場合は、インラインで追加してください。 onInlineeditは強制的な追加操作を許可しません。新しい行はすでに追加されています。 – Andrus