我之前已经问过这个问题,但当时还没有取得成功,但是我希望这一次我会更幸运。
我有一个场景,我需要在添加保存操作后继续填充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();
}
答案 0 :(得分:1)
我找到了解决这个问题的另一种方法,而不是在编辑过程中将值注入模态,而是在使用serializeEditData钩子提交数据之前更新postData。
在我的情况下,它基本上像
一样简单function (postData) {
postData.Date = $('#main_Date').val();
postData.DateShift = $('#main_Shift').val();
postData.ManagerID = $('#main_Manager').val();
}