我的JqGrid编辑表单行为有趣。它加载某些行。当我选择编辑时,除了选择标记( srf_sizeremarks )
之外,所有值都会在表单中预加载 var srfgrid = $("#srfArticletbl");
srfgrid.jqGrid({
datatype: "json",
url:"/Myelclass/SrfinsertArticle.do",
mtype: "GET",
autoencode: true,
postData: {
sampleno: function (){return $("#srf_sampleno").val();},
},
colNames:['ArticleID','ArticleShForm',....,'Srfarticleid'],
colModel :[
.........
//srf_sizeremarks not loading
{name:'srf_sizeremarks', index:'srf_sizeremarks', width:40, align:'center', editable:true, hidden: true,
edittype:'select',
editoptions: {
dataUrl:'/Myelclass/PrfAutocomplete.do?action=sizerem',
type:"GET",
buildSelect: function(data) {
var response = jQuery.parseJSON(data);
var s = '<select style="width: 520px">';
if (response && response.length) {
s += '<option value="0">--- Select Article Type ---</option>';
for (var i = 0, l=response.length; i<l ; i++) {
var ri = response[i].value;
s += '<option value="'+ri+'">'+ri+'</option>';
}
}
return s + "</select>";
},
} ,
editrules:{edithidden:true},
formoptions:{rowpos: 3, colpos: 3},
},
编辑表格代码是
//Edit
top: 150,
left: 200,
width : 750,
recreateForm: true,
beforeShowForm: function(formid) {
//alert("In Edit Form "); //if i uncomment this it works perfectly
//Size Calculation
var sizec = $("#srf_size").val();
var temp = sizec.indexOf(' ');
$("#srf_size").val(sizec.substring(0, temp));
$("#srf_sizeremarks").val(sizec.substring(temp+1));
$("#tr_srf_price").hide();
},
closeAfterEdit: true,
reloadAfterSubmit: true,
如果我在 beforeShowForm 中添加警告框,则效果非常好。我知道这是无法与alertbox 相关但我想知道我哪里出错了。请点亮一些灯 非常感谢
答案 0 :(得分:0)
通常'srf_sizeremarks'
的值应该已包含需要选择的选择值。我不确定您为什么需要在$("#srf_sizeremarks").val(valueToselect);
内使用其他代码beforeShowForm
来更改该值。
如果您将editoptions
与dataUrl
一起使用,则jqGrid首先使用空 <select>
创建“添加/编辑”表单,并向dataUrl
启动异步Ajax请求。因此beforeShowForm
可以/将在之前工作<{1}}。所以你不能使用<select>
。
我认为最简单的方法是修改$("#srf_sizeremarks").val(valueToselect);
回调。它使用buildSelect
列表构建<select>
。您可以将<option>
的代码移至beforeShowForm
回调,并将buildSelect
属性添加到项目selected="selected"
。如果ri===sizec.substring(temp+1)
列的原始值不等于其中一个选项,则应该解决问题。如果您确实拥有'srf_sizeremarks'
列中的原始值,该值等于该选项的值,则会选择该值。
或者你可以包括
'srf_sizeremarks'
setTimeout(function(){
...
// the code from beforeShowForm sould be here
$("#srf_sizeremarks").val(valueToselect); // sizec.substring(temp+1)
...
}, 50);
内的 。通过这种方式,您将确保在之后选择值,并且选择了{选择',并且选择buildSelect
列(如果存在)的原始值之后。所以它也应该有用。