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