对话框中的jqGrid错误
问题描述:
继我之前的post之后,我已经应用了Oleg的建议,这很有效,但不好。对话框中的jqGrid错误
下面是此框的图像:
每行接收一个选择框(称为“类型不存在”)和2个输入(称为“登场”和“翅”)与日期选择器。
所有行都很好,除了第一个最后一个字段('Fin')没有收到日期选择器的地方。
下面是代码:
var myCong = $("#dlgcong");
myCong.jqGrid({
url:'xpabs.php?id='+id+'&y='+y,
datatype: "json",
height:"auto",
cmTemplate: {sortable:false},
gridview: true,
colNames:['Type absence','Début','Fin','id'],
colModel:[
{name:'abs',index:'abs',width:155,editable:true,edittype:'select',
editoptions:{
dataUrl:"selabs.php",
dataEvents: [
{
type: 'change',
fn: function(e) {
$(this).parent().css('background-color','#'+$(this).find('option:selected').attr('colr'));
if($(this).find('option:selected').attr('colr')=='ffffff'){
$(this).parent().parent().find('input').datepicker('disable');
}else{
$(this).parent().parent().find('input').datepicker('enable');
$(this).parent().parent().attr('changed',true);
}
}
}
]
},
cellattr: function (rowId, val, rawObject, cm, rdata) {
return ' style="background-color:#'+rawObject[4]+';color:white;"';
}
},
{name:'debut',index:'debut',align:'center',width:70,editable:true},
{name:'fin',index:'fin',align:'center',width:70,editable:true},
{name:'id',index:'id',hidden:true}
],
jsonReader: {
id:3,
cell: "",
root: function (obj) {
return obj;
}
},
loadComplete: function (data) {
var $self = $(this),
idPrefix = $self.jqGrid("getGridParam", "idPrefix"),
l = data.length,
i,
item,
cm;
for (i = 0; i < l; i++) {
item = data[i];
cm = $self.jqGrid("getColProp", "debut");
cm.editoptions = {
dataInit: function(element) {
$(element).datepicker({
setDate:item[1],
minDate:'01/01/'+y,
maxDate:'31/12/'+y,
onSelect: function(selectedDate,inst) {
$(element).val(selectedDate);
$(element).parent().parent().attr('changed',true);
}
})
}
};
$self.jqGrid("editRow", idPrefix + item[3]);
//
cm = $self.jqGrid("getColProp", "fin");
cm.editoptions = {
dataInit: function(element) {
$(element).datepicker({
setDate:item[2],
minDate:'01/01/'+y,
maxDate:'31/12/'+y,
onSelect: function(selectedDate,inst) {
$(element).val(selectedDate);
$(element).parent().parent().attr('changed',true);
}
})
}
};
$self.jqGrid("editRow", idPrefix + item[3]);
}
myCong.find('select').each(function(){
$(this).css({
backgroundColor:'transparent',
color:'white',
border:0,
width:155
});
});
$('#EditDialog').dialog('option', 'title', 'Absences '+caption.toUpperCase());
},
idPrefix: "cong",
rowNum: 10000
});
,并从服务器的JSON响应:
[["Cong\u00e9 pay\u00e9","06\/09\/2013","29\/09\/2013","3","0080FF"],["Cong\u00e9 pay\u00e9","19\/07\/2013","19\/07\/2013","2","0080FF"],["Cong\u00e9 exceptionnel","03\/06\/2013","03\/06\/2013","5","FF8000"],["R.T.T.","31\/05\/2013","31\/05\/2013","4","FF0000"],["R.T.T.","10\/05\/2013","10\/05\/2013","6","FF0000"]]
我不明白为什么只有第一排的最后一个领域被打破,例如所有行担心loadComplete例程。
如果有人对这个问题以及如何解决这个问题有一个想法,非常感谢您的善意帮助和花费时间。 祝您有愉快的一天。 JiheL
答
的错误似乎我简单:你应该删除的
$self.jqGrid("editRow", idPrefix + item[3]);
内的第一个电话 “for” 循环。如果因为上一次调用而在已处于编辑模式的行上第二次调用editRow
,则第二次调用将被忽略。
是啊你是对的!下次我可以避免另一个错误。现在一切正常。非常感谢。 JiheL – JiheL 2013-04-05 10:20:09
@ user2132268:不客气! – Oleg 2013-04-05 10:21:12