Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2007, 14:41
Avatar de zacktagnan
zacktagnan
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 11 meses
Puntos: 3
Recoger los valores de la fila a actualizar en un GridView

Hola a tod@s:

Trabajo en C#

A la hora de recoger los valores de la fila a actualizar, en un DataGrid de la versión anterior del VisualStudio 2005, dentro del UpdateCommand ponía lo siguiente:

Código:
private void elDataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
	...
	string elValor = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
	...
}
estando el valor a cambiar en una caja de texto.

Ahora, en la versión 2005 del VisualStudio para hacer lo mismo en un GridView , dentro de su _RowUpdating, ya lo que he mencionado antes no funciona de la misma manera ó no se captura de esa forma...

Buscando por internet, encontré algo como lo que sigue, detallando que los valores se capturaban según si venían de un BoundField ó de un TemplateField:

Código:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
	...
	//en C#
	//SI LA CAJA DE TEXTO ESTÁ DENTRO DE UN BoundField
	string valorBoundField = GridView1.Rows[index].Cells[column_index].Text;
	//SI LA CAJA DE TEXTO ESTÁ DENTRO DE UN TemplateField
	string valorTemplateField = ((TextBox)(GridView1.Rows[index].FindControl("TextBox_ID"))).Text;
	...
}
Basándome en esto, y usando el evento e del _RowUpdating, finalmente, he puesto esto, considerando que tengo por cada fila dos datos para cada registro (solo uno de ello, el 1º, se activa para poder editarlo y el otro, el 2º, está a ReadOnly=true), y cada uno está en un BoundField:

Código:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
	...
	string valorBoundField = GridView1.Rows[e.RowIndex].Cells[1].Text;
	...
}
Pero me sigue sin capturar el valor deseado. Me llega una cadena vacía.

En mi GridView, en la primera columna están los enlaces de Editar. Eliminar Seleccionar; en la 2ª columna el valor a editar, y en la 3ª el que está con ReadOnly a True.
Lo raro, es que si pongo tanto "Cells[0]" como "Cells[1]", me llega una cadena vacía, y si pongo "Cells[2]" me llega el texto de la caja no editable.

¿¿¿Alguien me podría decir como se captura exactamente los valores a actualizar de una fila del GridVew, en C# y ASP.NET 2.0???
ó ¿¿¿decirme lo que está mal en el código pasado???
__________________
Saludos,

zacktagnan.
=================================================