Quiero duplicar la misma funcionalidad del botón editar con un solo clic en cualquier lugar de una fila de GridView.Haga clic en cualquier lugar en una fila de GridView para ingresar al modo de edición
El código siguiente hace esto, pero con un problema importante: si el usuario hace clic fuera de un cuadro de texto a la siguiente, los fuegos de edición de comandos de nuevo, y los cambios realizados en el cuadro de texto anterior revertir de nuevo a su valor original .
¿Alguna sugerencia para solucionar este problema?
¿O hay un mejor enfoque para lograr esto?
EDITAR: Esto se resolvió agregando un cheque para row.RowState.HasFlag(DataControlRowState.Edit)
. Ver código de abajo:
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);
}
he añadido el código a mi manejador RowDataBound, y luego en lugar de utilizar row.DataItemIndex como el segundo parámetro, solía gv.DataKeys (e.Row.RowIndex) .Value luego cojo el evento en el RowEditing evento y e.NewEditIndex es el ID de mi artículo en lugar del índice de la fila. – yougotiger