Ottieni GridView riga DataKey selezionata in Javascript

Ho GridView che posso selezionare una riga. Poi ho un pulsante sopra la griglia chiamato Modifica, che l’utente può fare clic per aprire una finestra e modificare la riga selezionata. Quindi il pulsante avrà il codice Javascript dietro di esso lungo le linee di

function editRecord() { var gridView = document.getElementById(""); var id = // somehow get the id here ??? window.open("edit.aspx?id=" + id); } 

La domanda è: come posso recuperare l’ID del record selezionato in javascript?

Ho lavorato sulla base della risposta di JasonS. Quello che ho fatto è stato creare un campo nascosto nella Grid View in questo modo:

           

Quindi su OnRowDataBind hai il codice per impostare la riga selezionata

 protected virtual void Grid_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { // Click to highlight row Control lnkSelect = e.Row.FindControl("lnkSelect"); if (lnkSelect != null) { StringBuilder click = new StringBuilder(); click.AppendLine(m_View.Page.ClientScript.GetPostBackClientHyperlink(lnkSelect, String.Empty)); click.AppendLine(String.Format("onGridViewRowSelected('{0}')", e.Row.RowIndex)); e.Row.Attributes.Add("onclick", click.ToString()); } } } 

E poi nel Javascript ho il codice come questo

  

Funziona un piacere 🙂

1) cambia la tua funzione javascript per usare un parametro

 function editRecord(clientId) { .... 

2) invia la chiamata nel tuo pulsante editRecord … se vuoi evitare di gestire gli ID generati .net, usa solo un semplice

  

Sulla base dei tuoi commenti alla risposta di @DaveK, in javascript puoi impostare l’id di un campo nascosto sul clientId della riga selezionata quando l’utente lo seleziona. Quindi fai in modo che la funzione editRecord utilizzi il valore impostato nel campo modulo nascosto.

si potrebbe evitare del tutto javascript, impostando i tag di ancoraggio pre-compilati con la stringa di query per ciascuna riga (sebbene ciò influirà sul layout della tabella, sarà necessario un solo clic anziché 2 dall’utente)

inserire nel modello gridview:

  Edit..