1

実は以前にもこの質問をしたことがありますが、当時は成功していませんでしたが、今回はもっと幸運になることを願っています。

保存アクションを追加した後、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();
    }
4

1 に答える 1

1

これを解決する別の方法を見つけました。編集中にモーダルに値を挿入する代わりに、serializeEditData フックを使用してデータが送信される直前に postData を更新しています。

私の場合、基本的には次のように簡単です

function (postData) {
    postData.Date = $('#main_Date').val();
    postData.DateShift = $('#main_Shift').val();
    postData.ManagerID = $('#main_Manager').val();
}
于 2012-07-20T11:39:02.423 に答える