実は以前にもこの質問をしたことがありますが、当時は成功していませんでしたが、今回はもっと幸運になることを願っています。
保存アクションを追加した後、jqgrid モーダルの特定のフィールドにデータを入力したままにする必要があるシナリオがあります。(現時点では、すべてのフィールドがクリア/デフォルト状態にリセットされます)。それらはユーザーには表示されないため、もう一度保存しようとすると、検証により日付/マネージャー/シフトを入力するように求められます。私はこれを修正するためにさまざまな試みを試みましたが、これまでのところ成功しませんでした
人が編集して保存をクリックすると、フォームがクリアされないため、その可能性はわかっています。(保存後にこれを選択的に実行できることを願っています)
私の画面はこんな感じです。
追加時
編集時
アイデアは、ユーザーがキャプチャするときに、一度に複数のレコードがこれらのキーのセットに対してキャプチャされるため、日付、シフト、マネージャーを更新する必要がなく、再選択する必要があるということです。それらの値を常に使用します。
追加が行われると、フォームの値は beforeShow フックを介して更新されます。(そして、グリッドの値を使用する必要があるため、編集は無視されます(間違いがあった場合)
コードスニペット
DataGrid.navGrid('#pager', { edit: true, add: true, del: true, search: true },
editItems,
{
width: 600,
url: URL_add,
data: submit_data,
afterSubmit: function (result) {
success:
{
if (onAfterSubmit != null)
onAfterSubmit(result);
return Notify("success", result.responseText);
}
fail: { return Notify("error", result.responseText); }
},
recreateForm: true,
beforeShowForm: addBeforeShowOptions,
modal: false,
overlay: false,
jqModal: true
},
...
var addBeforeShowOptions = function (form) {
formPattern(form);
$('#Date', form).val($('#main_Date').val());
$('#Shift', form).val($('#main_Shift').val());
$('#ManagerID', form).val($('#main_Manager').val());
$('#tr_Date', form).hide();
$('#tr_ManagerID', form).hide();
}