2013-08-20 28 views
6

Ho appena iniziato a utilizzare jqGrid e voglio eliminare le righe utilizzando un pulsante di eliminazione personalizzato. Sto usando il frammento di codice di seguito:Come eliminare righe in 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); 
    } 

Il codice precedente utilizza questa chiamata di funzione per passare il valore riga selezionata per l'eliminazione

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

Purtroppo il valore rowData è indefinito. Come posso usare la stessa struttura per cancellare le righe?

risposta

3

Ho trovato una soluzione al mio problema.

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)' />";  
} 

i just passare questo come un parametro per l'evento onclick pulsante e la chiamata di funzione questo ha tutte le proprietà avevo bisogno dal pulsante ma il più importante è il pulsante id che gli ID intervista del riga a cui appartiene il pulsante.

10

è possibile eliminare fila utilizzando

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

@Waaqas ... il problema è che non riesco ad accedere al rowid della riga che contiene il pulsante di cancellazione utilizzando il codice html del pulsante di ritorno sopra ... ma all'interno di onSelectRow è fattibile. – JoseLuke

+1

anche "delrowdata" non chiama il back-end. –

+0

scrive un metodo personalizzato, che fa entrambi i lavori, cancella la riga da ui e back-end usando ajax. –

1

La variabile cellValue non è definito nello stesso ambito come formattatore di cancellazione è. Si potrebbe provare due cose:

  1. passare l'argomento rowId dal formattatore alla funzione di eliminazione, invece di cellValue.
  2. Dichiarare una variabile al di fuori dell'ambito delle funzioni BOTH e quindi impostare tale variabile sul valore ID della riga selezionata nel gestore onSelectRow.
+0

@AJ ... abbastanza divertente è che nel formattatore solo il parametro colpos ha valore gli altri incluso rowId non hanno valori. quindi quando imposto la variabile al di fuori di entrambe le funzioni e imposta quella variabile sul valore ID della riga selezionata nel mio gestore onSElectRow quel valore (rowId) non cambierà anche se clicco su diversi pulsanti cancellati ma cambierà solo cliccando all'esterno cancella il pulsante in qualsiasi riga. Penso che la sfida è come collegare i pulsanti alle celle coz quando clicco su un pulsante, la griglia non ha alcuna informazione che quel pulsante è nella riga 1 o 2, ecc ... – JoseLuke

+0

Quindi devi dichiarare una variabile al di fuori di il tuo jquery 'ready' call, lo imposta sul rowId in' onSelectRow', e poi lo recupera nel tuo gestore di cancellazione. –

+0

@ AJ. Si prega di condividere la funzione di cancellazione da cui la riga è effettivamente rimossa dalla griglia. In realtà non riesco a capire come rimuovere quella riga dalla griglia. – shahjahan

Problemi correlati