2013-11-08 8 views
0

У меня возникла проблема с моим jqGrid, и я не мог найти подобную проблему в сети. Может быть, я не взял для него теги для записи, извините.jQuery jqGrid Inline Editing - Отменить редактирование строки удаляет строку?

Хорошо, давайте начнем говорить о реальной проблеме. Я использую встроенное редактирование, и я немного настроил кнопки. Я хочу использовать «ENTER» и «ESC» -Keys как ярлыки. Это прекрасно работает. Я манипулирую данными в своей сетке локально, и только если пользователь нажимает специализированную кнопку, я сохраню данные в файле. Эти файлы также используются для заполнения сетки. Поэтому, если пользователь теперь редактирует любую строку в сетке , которой еще нет в моем файле, и он отменяет редактирование, нажав ESC, вся строка данных удаляется.

Любой, кто может мне помочь? Моя сетка:

 // Table 
     jQuery("#tbl").tableDnD({scrollAmount:0});  
     jQuery("#tbl").jqGrid({ 
      url:'../path/to/my/script.pl', 
      datatype: "json", 
      postData:{'art':'empfang'}, 
      jsonReader: { 
       repeatitems: false 
      }, 
      colNames:['1','2','3','4','5'], 
      colModel: 
      [ 
       {name:'1',index:'1', width:200, align:"left", sortable:true,editable:true, edittype:"text"}, 
       {name:'2',index:'2', width:200, align:"left", sortable:true,editable:true, edittype:"select",editoptions:{value:b}}, 
       {name:'3',index:'3', width:200, align:"left", sortable:true,editable:true, edittype:"text"}, 
       {name:'4',index:'4', width:220, align:"left", sortable:true,editable:true, edittype:"select",editoptions:{value:""}}, 
       {name:'5',index:'5', width:200, align:"left",sortable:true,editable:true, edittype:"select",editoptions:{value:""}} 
      ], 
      rowNum:2000, 
      rowTotal: 2000, 
      loadtext: 'Reading data...', 
      height: '100%', 
      width: '100%', 
      hidegrid: false, 
      sortable: true, 
      toppager: true, 
      gridview: true, 
      viewrecords: true, 
      rownumbers: true, 
      loadonce: true, 
      editurl: 'dummy.php', 
      pager: '#tbl_toppager', 
      loadComplete: function(data){ 
       $("#tbl").setColProp('4', { editoptions: { value: data.userdata.4} }); 
       $("#tbl").setColProp('5', { editoptions: { value: data.userdata.directory_listing} }); 
      }, 
      gridComplete: function() { 
       $("#_empty","#tbl").addClass("nodrag nodrop"); 
       jQuery("#tbl").tableDnDUpdate(); 
      }, 
      caption: "Testgrid", 
      ondblClickRow: function(id){ 
       jQuery('#tbl').editRow(id, true); 
      } 
     });  

     jQuery("#tbl").jqGrid('filterToolbar'); 
     jQuery("#tbl").jqGrid(
      'navGrid', 
      '#tbl_toppager', 
      { 
       del: true, 
       add: false, 
       edit: false, 
       refresh: false, 
       search: true 
      }, 
      { 
      }, // edit options 
      { 
      }, // add options 
      { 
       reloadAfterSubmit: false, 
       jqModal: true, 
       closeOnEscape: true 
      }, // del options 
      { 
       jqModal: true, 
       closeOnEscape: true 
      } // search options 
     ); 
     jQuery("#tbl").jqGrid(
      'inlineNav', 
      '#tbl_toppager', 
      { 
       editParams: { keys: true }, 
       addParams: { addRowParams: { keys: true } } 
      } 
     ); // Inline Editing 

     jQuery("#tbl_toppager_right").hide(); 
     jQuery("#tbl_toppager_center").hide(); 
     jQuery("#tbl").navSeparatorAdd(
      "#tbl_toppager_left", 
      { 
       sepclass : "ui-separator", 
       sepcontent:"" 
      } 
     ).jqGrid(
      'navButtonAdd', 
      '#tbl_toppager_left', 
      { 
       caption: "", 
       buttonicon: "ui-icon-document", 
       title: "Save data in file", 
       position: "last", 
       onClickButton: function() { 
        $("#write_file").dialog('open'); 
       } 
      } 
     ); 

Спасибо за консультацию. С уважением.

+0

Никто не может помочь? :/ –

+0

Никто не понял? Даже если это ожидаемое поведение? –

ответ

0

В официальной демо JQGrid они дают пример, который делают почти то же самое, что вы запрашиваете

... 
onSelectRow: function(id){ 
       if(id && id!==lastsel){ 
        jQuery('#rowed3').jqGrid('restoreRow',lastsel); 
        jQuery('#rowed3').jqGrid('editRow',id,true); 
        lastsel=id; 
       } 
      } 
... 

где lastsel глобальная переменная

Таким образом, вы можете использовать jQuery('#rowed3').jqGrid('restoreRow',idOfLineToRestore); в вашем случае эвакуации

Смежные вопросы