查看了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 = "<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,search:true,refresh:true},
{closeOnEscape:true, recreateForm: true, width:600}
);
myGrid.jqGrid('filterToolbar',{defaultSearch:'cn',stringResult:true})
答案 0 :(得分:3)
你误解了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]
});