jqgrid recréerform paramètre de largeur, travaillant uniquement pour l’édition, pas pour append

J’ai regardé sur le wiki jqgrid mais je ne trouve pas ce dont j’ai besoin.

J’ai recreatform défini sur true et la largeur définie, fonctionne bien pour l’édition, mais lorsque j’essaie d’append un nouvel enregistrement, le formulaire n’est pas à la largeur que je spécifie dans les parameters de formulaire de recréation.

voici mon code:

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',ssortingngResult:true}) 

Vous comprenez mal le sens de recreateForm . J’essaie d’expliquer pourquoi c’est nécessaire.

La méthode navGrid a jusqu’à 7 parameters. Vous utilisez uniquement prmEdit mais ne définissez pas le paramètre prmAdd . C’est ton problème principal. L’implémentation par défaut des boîtes de dialog “Ajouter” et “Modifier” est telle qu’une boîte de dialog créée ne sera pas fermée et ne sera masquée qu’à la place. De plus, une boîte de dialog sera partagée (!!!) en tant que boîte de dialog “Ajouter” et “Modifier”. Si recreateForm est utilisé, la boîte de dialog créée précédemment (et maintenant masquée) sera détruite et la nouvelle sera créée.

Dans votre cas, vous n’avez défini que les parameters de dialog “Edition” comme {closeOnEscape:true, recreateForm: true, width:600} . Ainsi, si l’utilisateur ouvre la boîte de dialog “Ajouter” après la boîte de dialog “Edition”, la boîte de dialog “Edition” précédemment masquée sera utilisée comme boîte de dialog “Ajouter”. Le titre de la boîte de dialog sera bien sûr modifié.

Ainsi, vous pouvez par exemple utiliser

 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 ); 

ou redéfinissez les valeurs par défaut de la grid communes aux boîtes de dialog Modifier et Ajouter. Par exemple

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