对话框中的jqGrid错误

问题描述:

继我之前的post之后,我已经应用了Oleg的建议,这很有效,但不好。对话框中的jqGrid错误

下面是此框的图像:

enter image description here

每行接收一个选择框(称为“类型不存在”)和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,则第二次调用将被忽略。

+0

是啊你是对的!下次我可以避免另一个错误。现在一切正常。非常感谢。 JiheL – JiheL 2013-04-05 10:20:09

+0

@ user2132268:不客气! – Oleg 2013-04-05 10:21:12