jqgrid recreateform width设置,仅用于编辑,不用于添加

看过jqgrid wiki但是找不到我需要的东西。

我已将recreateform设置为true并设置宽度,适用于编辑,但是当我尝试添加新记录时,表单不是我在重新创建表单参数中指定的宽度,它们是添加表单的单独设置吗?

这是我的代码:

myGrid = jQuery("#rowed2").jqGrid({ url:'data/stokistdata_s_json.php?q=3', datatype: "json", mtype: "POST", rowNum:10, rowList:[50,100,150,200,300,400,500,600], pager: '#prowed2', sortname: 'id_mdt', viewrecords: true, gridview:true, sortorder: "asc", rowNum:50, scroll: true, editurl: "data/server.php", caption:"Stockist's and Orchid days", colNames:[ 'Actions', 'id', 'Type', 'Name', 'Geo Address', 'Display Address', 'Telephone', 'Email', 'website', 'lat', 'lng', 'flag', 'description', 'active' ], colModel:[{ name:'Actions', index:'Actions', width:100, sortable:false, search:false }, { name:'id_mdt', index:'id_mdt', width:15, align:"left", sortable:true, search:false, editable:true, hidden: true, editrules: { edithidden: false } //editoptions:{size:"20"} }, { name:'id_etp', index:'id_etp', width:90, align:"left", sortable:true, editable:true, edittype:"select", formatter:'select', editoptions:{value:":All;1:Stockist;2:Orchid Day"}, search:true, stype:'select', sopt: ['eq'], searchoptions:{value:":All;1:Stockist;2:Orchid Day"} }, { name:'Name_mdt', index:'Name_mdt', align:"left", width:150, editable:true, search:true, stype:'text', sopt:['cn'] }, { name:'geoaddr_mdt', index:'geoaddr_mdt', width:150, align:"left", editable:true, search:false, edittype:"textarea", editoptions:{rows:"3",cols:"30"} }, { name:'displayaddr_mdt', index:'displayaddr_mdt', width:150, align:"left", editable:true, search:false, edittype:"textarea", editoptions:{rows:"3",cols:"30"} }, { name:'telephone_mdt', index:'telephone_mdt', width:80, align:"left", editable:true, search:false }, { name:'email_mdt', index:'email_mdt', width:80, align:"left", sortable:false, editable:true, search:false }, { name:'website_mdt', index:'website_mdt', width:80, align:"left", sortable:false, editable:true, search:false }, { name:'lat_mdt', index:'lat_mdt', width:40, align:"left", sortable:false, editable:true, search:false } , { name:'lng_mdt', index:'lng_mdt', width:40, align:"left", sortable:false, editable:true, search:false }, { name:'flag_mdt', index:'flag_mdt', width:20, align:"left", sortable:true, editable:true, edittype:"select", editoptions: {value:{'1':'Flagged','0':'No Flag'}}, search:true,// stype:'select', searchoptions:{value:{'':'All','1':'Flagged','0':'No Flag'}}//{value:":Both;1:Flagged;0:No Flag"} }, { name:'description_mdt', index:'description_mdt', width:150, align:"left", sortable:false, editable:true, search:false, edittype:"textarea", editoptions:{rows:"3",cols:"30"} }, { name:'active_mdt', index:'active_mdt', width:20, align:"left", sortable:true, editable:true, edittype:"select", editoptions: {value:{'1':'Active','0':'Hidden'}}, search:true,// stype:'select', searchoptions:{value:{'':'All','1':'Active','0':'Hidden'}} //{value:":Both;1:Active;0:Hidden"} }], search : { caption: "Search...", Find: "Find", Reset: "Reset", matchText: " match", rulesText: " rules" }, gridComplete: function(){ var ids = jQuery("#rowed2").jqGrid('getDataIDs'); for(var i=0;i < ids.length;i++){ var cl = ids[i]; be = ""; se = ""; ce = ""; fl = ""; gc = ""; jQuery("#rowed2").jqGrid('setRowData',ids[i],{Actions:fl+gc}); } } }); jQuery("#rowed2").jqGrid('navGrid',"#prowed2", {edit:true,add:true,del:true,search:true,refresh:true}, {closeOnEscape:true, recreateForm: true, width:600} ); myGrid.jqGrid('filterToolbar',{defaultSearch:'cn',stringResult:true}) 

你误解了recreateForm的含义。 我试着解释为什么需要它。

navGrid方法最多有7个参数。 您只使用prmEdit但不设置prmAdd参数。 这是你的主要问题。 “添加”和“编辑”对话框的默认实现是,一个创建的对话框将不会关闭 ,而只会隐藏。 此外, 一个对话框将作为“添加”和“编辑”对话框共享 (!!!)。 如果使用recreateForm ,则将销毁先前创建的(现在隐藏的)对话框,并创建新对话框。

在您的情况下,您只将“编辑”对话框参数定义为{closeOnEscape:true, recreateForm: true, width:600} 。 因此,如果用户在“编辑”对话框打开“添加”对话框则先前隐藏的“编辑”对话框将用作“添加”对话框。 对话框的标题当然会改变。

所以你可以使用

 jQuery("#rowed2").jqGrid('navGrid',"#prowed2", {edit:true,add:true,del:true,search:true,refresh:true},// navGrid options {closeOnEscape:true, recreateForm: true, width:600}, // Edit options {closeOnEscape:true, recreateForm: true, width:500} // Add options ); 

或重新定义“编辑”和“添加”对话框中常见的网格默认值。 例如

 jQuery.extend(jQuery.jgrid.edit, { closeAfterAdd: true, closeAfterEdit: true, jqModal: false, recreateForm: true, savekey: [true,13] });