2013-04-04 58 views
0

繼我之前的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

回答

1

的錯誤似乎我簡單:你應該刪除的

$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