[ Foro de C# ]

No pasa valor de ViewState en bloque Try

10-Jan-2015 01:19
Invitado (Guillo)
1 Respuestas

Hola, como les va?, como dice el titulo, el problema es que meto valor en ViewState de Id de Tabla a través de DataKeyNames , mediante fila seleccionada de Grid,....................Son 3 Grids independientes en el mismo WebForm, por lo tanto, cada uno con un ViewState........Con Punto de Interrupción compruebo que los valores han sido captados.....

Una vez capturados los valores de las filas, y metidos en los ViewState, paso al Try para meterlos en Tabla, y luego de apretar botón Aceptar, pero no se llena la Tabla..............Con Punto de Interrupción compruebo que los valores no están.......

A continuación, dejo código para ver si alguien se da cuenta de que es lo que sucede (sintácticamente o de otra forma), y cual seria la solución, aportándola.......(Los Grids se llenan solos en el Page_Load)


 protected void GridMateria_SelectedIndexChanged(object sender, EventArgs e)
 {
 // Se obtiene la fila seleccionada del gridview

 GridViewRow row = GridMateria.SelectedRow;

 // Obtengo el id de la entidad que se esta editando
 // en este caso de la entidad Materia

 ViewState["idMateria"] = Convert.ToInt32(GridMateria.DataKeys[row.RowIndex].Value);

 }

 protected void GridCurso_SelectedIndexChanged(object sender, EventArgs e)
 {
 // Se obtiene la fila seleccionada del gridview

 GridViewRow row = GridCurso.SelectedRow;

 // Obtengo el id de la entidad que se esta editando
 // en este caso de la entidad Curso
 ViewState["idCurso"] = Convert.ToInt32(GridCurso.DataKeys[row.RowIndex].Value);

 }

 protected void GridProfesor_SelectedIndexChanged(object sender, EventArgs e)
 {
 // Se obtiene la fila seleccionada del gridview
 GridViewRow row = GridProfesor.SelectedRow;

 // Obtengo el id de la entidad que se esta editando
 // en este caso de la entidad Profesor
 ViewState["idProfesor"] = Convert.ToInt32(GridProfesor.DataKeys[row.RowIndex].Value);
 }
 protected void ButtonAceptar_Click(object sender, EventArgs e)
 {
 try
 {
 string cadenaConexion = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
 OleDbConnection cnn = new OleDbConnection(cadenaConexion);
 cnn.Open();
 string sql = string.Empty;
 sql = @"INSERT INTO CursosMaterias (id_Materia, id_Curso, Id_persona)
 VALUES (@idMateria, @idCurso, @idProfesor)";
 OleDbCommand cmd = new OleDbCommand(sql, cnn);
 cmd.Parameters.AddWithValue("@idMateria", (ViewState["idMateria"]));
 cmd.Parameters.AddWithValue("@idCurso", (ViewState["idCurso"]));
 cmd.Parameters.AddWithValue("@idProfesor", (ViewState["idProfesor"]));
 }



Mil millones de gracias a todos, un abrazo, espero devolución......


11-Jan-2015 16:41
Nacho Cabanes (+83)

Ahí falta código que ayude a tener una visión de conjunto, y/o detalles sobre dónde pones los puntos de interrupción y cuáles de ellos te dicen que todo es correcto o no.

Una solución que quizá te ayude es anular momentáneamente (con un comentario, por ejemplo) los try-catch, de forma que, en caso de error, éste no se intercepte de forma silenciosa, sino que salte la excepción y te diga qué problema concreto ha ocurrido y dónde.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)