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 回答