Desidero duplicare la stessa funzionalità del pulsante di modifica utilizzando un singolo clic in qualsiasi punto della riga GridView.Fare clic in qualsiasi punto della riga GridView per accedere alla modalità di modifica
Il seguente codice fa questo, ma con un grave problema: se l'utente clicca off di una casella di testo al successivo, il comando di modifica incendi nuovamente, e le modifiche apportate al testo precedente tornare indietro al suo valore originale .
Qualche suggerimento su come risolvere questo comportamento?
Oppure, c'è un approccio migliore per realizzare questo?
MODIFICA: È stato risolto aggiungendo un assegno per row.RowState.HasFlag(DataControlRowState.Edit)
. Vedere codice qui sotto:
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
foreach(GridViewRow row in gvwOrderItems.Rows)
{
if(row.RowType == DataControlRowType.DataRow &&
row.RowState.HasFlag(DataControlRowState.Edit) == false)
{
// enable click on row to enter edit mode
row.Attributes["onclick"] =
ClientScript.GetPostBackClientHyperlink(gvwOrderItems, "Edit$" + row.DataItemIndex, true);
}
}
base.Render(writer);
}
ho aggiunto questo codice al mio gestore RowDataBound, e quindi invece di usare row.DataItemIndex come il 2 ° parametro, ho usato gv.DataKeys (e.Row.RowIndex) .Value ho poi prendere l'evento nel RowEditing evento e e.NewEditIndex è l'ID del mio oggetto piuttosto che l'indice di riga. – yougotiger