2013-08-20 13 views
6

Właśnie zacząłem używać jqGrid i chcę usunąć wiersze za pomocą niestandardowego przycisku usuwania. Używam fragment kodu poniżej:Jak usunąć wiersze w jqgrid

try { 
     var cellValue; 
     var id; 
     jQuery("#editDataGridList").jqGrid({ 
      datatype: "local", 
      width: 900, 
      height: 270, 
      colNames: ['Action', 'Interview id', 'Date of observation', 'Name of enumerator'], 
      onSelectRow: function (id) { 
       debugger; 
       var rowData = jQuery(this).getRowData(id);     
       cellValue = rowData['InterviewId']; 
      }, 
      colModel: [     
       { 
        name: 'actions', index: 'InterviewId', sortable: false, 
        formatter: function (rowId, cellval, colpos, rwdat, _act) { 

         return "<input type='button' id='btnid' value='delete' class='btn' onClick='deleteRecords(" + cellValue + ");' />"; 

        } 
       }, 
       { name: 'InterviewId', index: 'InterviewId' }, 
       { name: 'Date', index: 'Date' }, 
       { name: 'NameOfEnum', index: 'NameOfEnum' } 
      ], 

      multiselect: false, 
      caption: "Edit already entered data" 
     }); 
    } 
    catch (e) { 
     alert(e.message); 
    } 

Powyższy kod używa tego wywołania funkcji przekazać wartość wybranego wiersza do usunięcia

function deleteRecords(rowData) { 
    alert(rowData); 
} 

Niestety wartość rowData jest niezdefiniowany. Jak mogę użyć tej samej struktury do usunięcia wierszy?

Odpowiedz

3

Znalazłem rozwiązanie mojego własnego problemu.

formatter: function (rowId, cellval, colpos, rwdat, _act) { 
     var rowInterviewId = colpos.InterviewId.toString(); 
     return "<input type='button' id='" + rowInterviewId + "' value='delete' class='btn' 
     onClick='deleteRecords(this)' />";  
} 

ja po prostu przekazać to jako parametr do przycisku onclick zdarzenia i na wywołanie funkcji ten posiada wszystkie właściwości Musiałem z przycisku, ale najważniejszy jest przycisk id czyli identyfikatory wywiadowi z wiersz, do którego należy przycisk.

10

można usunąć wiersza przy użyciu

$('#editDataGridList').jqGrid('delRowData',rowid); 
+0

@Waaqas ... Problem polega na tym, że nie mogę uzyskać dostępu do wiersza w wierszu zawierającym przycisk usuwania za pomocą kodu html przycisku powrotu powyżej ... ale wewnątrz onSelectRow jest możliwy do wykonania. – JoseLuke

+1

również "delrowdata" nie wywołuje back-end. –

+0

napisz niestandardową metodę, która wykonuje zarówno zadania, usuwa wiersz z ui, jak i back-end za pomocą ajax. –

1

Zmienna cellValue nie jest zdefiniowane w takim samym zakresie jak Twój kasowania formater jest. Można spróbować dwóch rzeczy:

  1. Przepuścić rowId argumentu z formater do funkcji kasowania zamiast cellValue.
  2. Zadeklaruj zmienną spoza zakresu funkcji BOTH, a następnie ustaw tę zmienną na wartość identyfikatora wybranego wiersza w swoim module obsługi onSelectRow.
+0

@AJ ... Zabawne jest to, że w edytorze tylko parametr colpos ma wartość, a pozostałe, w tym rowId, nie mają wartości. wtedy, gdy ustawię zmienną poza obiema funkcjami i ustawię tę zmienną na wartość ID wybranego wiersza w moim programie obsługi onSElectRow, ta wartość (rowId) nie zmieni się, nawet jeśli kliknę na różne usunięte przyciski, ale zmieni się tylko po kliknięciu poza przycisk usuwania w dowolnym wierszu. Myślę, że wyzwaniem jest, jak podłączyć przyciski do komórek coz, gdy klikam na przycisk to siatka nie ma żadnych informacji, że ten przycisk jest w rzędzie 1 lub 2 itd ... – JoseLuke

+0

Następnie musisz zadeklarować zmienną poza twoja komenda jquery 'ready', ustaw ją na wartość rowId w' onSelectRow', a następnie pobierz ją w swojej procedurze usuwania. –

+0

@AJ. Proszę udostępnić funkcję usuwania z miejsca, w którym wiersz jest faktycznie usuwany z sieci. Właściwie to nie mogę zrozumieć, jak usunąć ten rząd z siatki. – shahjahan

Powiązane problemy