jqgrid - 关闭窗体对话框
问题描述:
我正在使用jqgrid 4.3.1,我正在使用本地数据进行表单编辑。问题是添加或编辑后表单不关闭。这是我的代码。jqgrid - 关闭窗体对话框
$('#studentset').jqGrid({
data: mydata,
datatype: "local",
colNames:['id','First Name', 'Last Name'],
colModel:[
{name:'id',index:'id', width:60},
{name:'firstName',index:'fName', width:300, editable:true},
{name:'lastName',index:'lastName', width:300, editable:true}
],
pager: '#pager',
rowNum: 10,
rowList: [5, 10, 20],
sortname: 'id',
sortorder: 'asc',
viewrecords: true,
height: "80%",
caption: "Students to be Registered",
editurl: corpUrl
});
$('#studentset').jqGrid('navGrid', '#pager', { add: true, edit: true, del: false, search: false, refresh: false },
{
recreateForm: true,
closeAfterEdit: true,
modal:true,
afterSubmit: function(data){
var myObject = eval('(' + data.responseText + ')');
$('#studentset').setGridParam({data: myObject}).trigger("reloadGrid");
}
},
{
recreateForm: true,
closeAfterAdd: true,
modal:true,
afterSubmit: function(data){
var myObject = eval('(' + data.responseText + ')');
$('#studentset').setGridParam({data: myObject}).trigger("reloadGrid");
}
},
{},{},{}
);
注意在编辑和添加navGrid选项我已经指定了相关的选项。 closeAfterAdd: true,
和closeAfterEdit: true
。但模态形式只是拒绝关闭。我不确定它是否是这个版本的jqgrid中的一个bug。
有人可以提供一些指导吗?可能是,如何手动关闭对话框?
答
好吧所以它的逻辑性,只需触发对话框关闭按钮的点击事件就像这样。您将使用火虫找到span标签的ID。
$('#studentset').jqGrid('navGrid', '#pager', { add: true, edit: true, del: false, search: false, refresh: false },
{
modal:true,
jqModal: true,
afterSubmit: function(data){
var myObject = eval('(' + data.responseText + ')');
$('#studentset').setGridParam({data: myObject}).trigger("reloadGrid");
$(".ui-icon-closethick").trigger('click');
}
},
{
modal:true,
jqModal: true,
afterSubmit: function(data){
var myObject = eval('(' + data.responseText + ')');
$('#studentset').setGridParam({data: myObject}).trigger("reloadGrid");
$(".ui-icon-closethick").trigger('click');
}
},
{},{},{}
);
希望有人从中受益。
答
根据文件建立的语法afterSubmit是:
afterSubmit : function(response, postdata)
{
…
return [success,message,new_id]
}
否则eventhough数据成功发布IE8将抛出错误。
你可以使用:
return [true,'',''];
然后closeAfterAdd:真和closeAfterEdit:真将无需工作,以编程方式关闭窗体:
$('#cData').trigger('click');
答
你可以这样做与在bootstrap的帮助下,将jqgrid放入div中然后用链接关闭div的想法服务于此目的。以下是代码。
<div>
<div class="alert alert-default">
<a href="#" id="okayMessage" class="close" data-dismiss="alert"
aria-label="close">×</a>
<br>
<table id="accountIdSearch" style="font-size: 11px"></table>
<div id="pagingDivId" style="height: 50px;">
</div>
</div>
</div>
+1
仅仅为此目的添加一个像Bootstrap这样的大型框架并没有多大意义。 OP只使用jQuery,其他的都是猜测。试着在你的答案中反映出来。 – 2016-12-27 11:17:39
此解决方案的问题是,如果您打开任何其他对话框,它们也将被关闭。原因是你没有触发跨度的ID,你在跨度的类别上触发,他们将默认共享一个类别。 – Joseph 2012-02-24 19:09:31
你能解释一下这两行吗? var myObject = eval('('+ data.responseText +')'); $('#studentset')。setGridParam({data:myObject})。trigger(“reloadGrid”);抱歉关于糟糕的格式。 – 2012-06-19 01:25:59
data.responseText是必须被评估为javascript对象的json数据。这将是重新加载后将显示的新数据。 – Binaryrespawn 2012-09-07 14:39:14