jqgrid recreateform宽度设置,仅适用于编辑,不适用于添加

问题描述

|| 看过jqgrid Wiki,但找不到我需要的东西。 我已经将recreateform设置为true并设置了宽度,可以很好地进行编辑,但是当我尝试添加新记录时,表单的宽度不等于我在recreateform参数中指定的宽度,它们是添加表单的单独设置吗? 这是我的代码
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,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\',width:150,stype:\'text\',sopt:[\'cn\']
    },{
        name:\'geoaddr_mdt\',index:\'geoaddr_mdt\',edittype:\"textarea\",editoptions:{rows:\"3\",cols:\"30\"}
    },{
        name:\'displayaddr_mdt\',index:\'displayaddr_mdt\',{
        name:\'telephone_mdt\',index:\'telephone_mdt\',width:80,{
        name:\'email_mdt\',index:\'email_mdt\',{
        name:\'website_mdt\',index:\'website_mdt\',{
        name:\'lat_mdt\',index:\'lat_mdt\',width:40,{
        name:\'lng_mdt\',index:\'lng_mdt\',{
        name:\'flag_mdt\',index:\'flag_mdt\',width:20,editoptions: {value:{\'1\':\'Flagged\',\'0\':\'No Flag\'}},//
        stype:\'select\',searchoptions:{value:{\'\':\'All\',\'1\':\'Flagged\',\'0\':\'No Flag\'}}//{value:\":Both;1:Flagged;0:No Flag\"}
    },{
        name:\'description_mdt\',index:\'description_mdt\',{
        name:\'active_mdt\',index:\'active_mdt\',editoptions: {value:{\'1\':\'Active\',\'0\':\'Hidden\'}},\'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 = \"<input style=\'height:22px;width:20px;\' type=\'button\' value=\'E\' alt=\'Edit Location\' onclick=\\\"jQuery(\'#rowed2\').editGridRow(\'\"+cl+\"\');\\\" />\"; 
            se = \"<input style=\'height:22px;width:20px;\' type=\'button\' value=\'S\' onclick=\\\"jQuery(\'#rowed2\').saveRow(\'\"+cl+\"\');\\\" />\"; 
            ce = \"<input style=\'height:22px;width:20px;\' type=\'button\' value=\'C\' onclick=\\\"jQuery(\'#rowed2\').restoreRow(\'\"+cl+\"\');\\\" />\";
            fl = \"<input style=\'height:22px;width:50px;\' type=\'button\' value=\'Find\' alt=\'Find Location\' class=\'findMe\' rel=\'\"+cl+\"\' />\";
            gc = \"<input style=\'height:22px;width:50px;\' type=\'button\' value=\'Geo\' class=\'geocodeMe\' rel=\'\"+cl+\"\' />\";
            jQuery(\"#rowed2\").jqgrid(\'setRowData\',ids[i],{Actions:fl+gc}); 
        } 
    }
}); 

jQuery(\"#rowed2\").jqgrid(\'navGrid\',\"#prowed2\",{edit:true,add:true,del:true,refresh:true},{cloSEOnescape:true,recreateForm: true,width:600}
); 
myGrid.jqgrid(\'filterToolbar\',{defaultSearch:\'cn\',stringResult:true})
    

解决方法

您误解了“ 1”的含义。我试图解释为什么需要它。 方法navGrid最多具有7个参数。您仅使用
prmEdit
,而不设置
prmAdd
参数。那是你的主要问题。 \“添加\”和\“编辑\”对话框的默认实现是这样,一个创建的对话框将不会关闭,而只会隐藏。而且,一个对话框将被共享(!!!)为“添加”和“编辑”对话框。如果使用ѭ1that,则先前创建的对话框(现已隐藏)将被销毁,并创建新的对话框。 在您的情况下,您仅将\“ Edit \”对话框参数定义为
{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,width:600},// Edit options
    {closeOnEscape:true,width:500}    // Add options
);
或重新定义“编辑”和“添加”对话框共有的网格默认设置。例如
jQuery.extend(jQuery.jgrid.edit,{
    closeAfterAdd: true,closeAfterEdit: true,jqModal: false,savekey: [true,13]
});