我正在使用jqgrid 4.5.2版本和Jquery-3.2.1。
在jqgrid中,代替编辑按钮(添加,编辑和删除),实现了自定义(添加,编辑和删除)按钮。现在,在单击自定义添加/编辑按钮时,将打开自定义表单。以下是自定义按钮的onclick事件。
这意味着我们用自己的自定义表单替换了jqgrid默认的编辑/添加表单。之前我们用beforeSubmit事件编写了一些验证,这些验证在jqgrid的默认(添加/编辑)形式下工作正常。现在我想对替换的自定义表单应用相同的验证。
function(myGrid){
myGrid.getGridParam('dataGrid').openEditFormIndicator();
}(myGrid)
该自定义表单具有自定义提交和取消按钮。现在我想将beforeSubmit事件添加到此提交按钮。由于表单是自定义的,因此jqgrids default beforeSubmit事件不起作用。
添加/编辑表单由我们自己的框架构建,该框架基于Java构建。表单完全独立于jqgrid。我只是从jqgrid行获取id(双击或单击编辑按钮)并将其传递给模板,该模板从db中提取数据并形成行编辑表单。如果传递的id为空或在db上找不到,则使用相同的模板形成空(添加)表单。
DataGrid.prototype.openEditFormIndicator = function() {
var id = this.grid.getGridParam('selrow')
if(!id) {
var gridId = this.grid.attr('id');
var idSelector = "#alertmod_" + gridId;
$.jgrid.viewModal(idSelector, {
gbox: "#gbox_" + $.jgrid.jqID(gridId),
jqm: true
});
$(idSelector).find(".ui-jqdialog-titlebar-close").focus();
}
else {
//openInteractiveForm('form_plugin_examples',this.options.formIndicatorId,'id',id,'true');
var encodedPkId = encodeURIComponent(id);
this.openFormIndicator('Id:' + encodedPkId + ',pkId:' + encodedPkId + ',Search:id%3A' + encodedPkId + ',IndicatorId:' + this.options.formIndicatorId + ',Debug:true' + ',FilterField:id,FilterValue:' + encodedPkId);
// TODO width, length, position
}
};
DataGrid.prototype.openFormIndicator = function(optionsStr) {
DialogBoxEdit.newWindow(this.options.formIndicatorId, optionsStr);
};
使用上述两个函数,在DialogBoxEditHandler.js中形成了添加/编辑表单。 js在内部调用模板来创建表单。
创建的表单包含以下两个按钮,我需要在提交事件之前添加它们。
<Button id="lnk-close" onclick="closeDialogBoxControl($(this).closest('form'));" class="btn-default">Close</Button>
<Button id="lnk-submit" onclick="save_form_data($(this).closest('form'),true,'72');MD.ui.reloadGrid();" class="btn-primary ui-dialog-close">Save</Button>
答案 0 :(得分:1)
看来你第二次提出这个问题了。 this is here
的文档基本上在这种情况下,您需要定义该事件并返回相应的数组。单击onclick事件中定义的自定义按钮时,使用链接中提供的帮助可以执行以下操作:
...
jQuery("#grid_id").jqGrid('editGridRow', rowid, {
...
beforeSubmit : function( postdata, formid ) {
if(someconditionOK) {
return [true,''];
} else {
return [false,'Error submiting data'];
}
},
...
});
答案 1 :(得分:0)
如果我们想要使用beforeSubmit事件,我们必须在表单编辑中使用构建 - 在所有其他情况下,事件将不起作用 - 在使用我们自己的编辑表单的情况下,我们需要在提交之前编写我们自己的自定义。 / p>