Come aggiungere una nuova colonna di pulsanti / immagini in jqgrid

Sto usando JQgrid nell’applicazione web MVC ASP.net.

Sono stato in grado di aggiungere una nuova colonna di pulsanti denominati modifica utilizzando i formatters

Ma il problema è che non ero in grado di ottenere il valore di una colonna in una riga per la quale è stato fatto clic sul pulsante.

Ad esempio, se clicco sul pulsante modifica (nuovo aggiunto) sulla 4a riga, vorrei recuperare il valore della prima colonna di quella particolare riga.

ho bisogno di questo perché voglio redirect a un’altra pagina con quel valore e fare la modifica lì.

Non ero in grado di recuperare quel valore e aggiungere javascript.

Si prega di aiuto su questo con tutti i campioni di codice ..

Non è necessario associare il gestore eventi click a ogni pulsante nella colonna. Ogni associazione richiede memoria e altre risorse del browser web. La maggior parte degli eventi che passano dall’elemento DOM interno a quello esterno (vedi qui ), Clic del mouse, Keydown della tastiera, Touch touchstart e altri eventi sul pulsante all’interno della griglia saranno resi in bolla all’elemento

della griglia. jqGrid registra per default il gestore di eventi click sulla griglia. Chiama i callback jqGridBeforeSelectRow e jqGridCellSelect e jqGridCellSelect eventi jqGridBeforeSelectRow e jqGridCellSelect dal gestore eventi. Quindi, invece di bind i tuoi gestori di eventi click su ogni pulsante è sufficiente usarne uno da quelli sopra elencati. beforeSelectRow verrà utilizzato beforeSelectRow (o jqGridBeforeSelectRow ). Il callback è pratico se non si seleziona la riga corrispondente facendo clic sul pulsante. La risposta per esempio mostra come verificare se la colonna di cui hai bisogno è chiamata. Un’altra risposta fornisce un esempio che sarà molto vicino a ciò di cui hai bisogno. Un’altra risposta ti dà un altro frammento di codice. Per vedere di più le mie vecchie risposte sull’argomento puoi usare la seguente query .

AGGIORNATO : la demo http://jsfiddle.net/ShKDX/82/ è la modifica della demo pubblicata da Manuel van Rijn. Dimostra ciò che intendo.

Ecco un semplice esempio di come puoi aggiungere pulsanti dynamicmente a un jqgrid

http://jsfiddle.net/ShKDX/1/

Non sono sicuro che la prima riga sia l’id come specificato nel violino, ma puoi modificarlo per utilizzare i dati corretti dalla funzione afterInsertRow

 var data = [ {id: 1, text: 'row1'}, {id: 2, text: 'row2'}, {id: 3, text: 'row3'}, {id: 4, text: 'row4'}, {id: 5, text: 'row5'}, ]; $("#grid").jqGrid({ datatype: "local", height: 250, colNames: ['Id', 'Text', 'edit'], colModel: [ { name: 'id', index: 'id', sorttype: "int" }, { name: 'text', index: 'text' }, { name: 'edit', index: 'edit', align: 'center', sortable: false, width: '40px' } ], caption: "Custom buttons", data: data, afterInsertRow: function(id, currentData, jsondata) { var button = "edit"; $(this).setCell(id, "edit", button); }, loadComplete: function(data) { $(".gridbutton").on('click', function(e) { e.preventDefault(); alert('Edit id: ' + $(this).data("id")); }); } });