Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2015, 20:09
llogui
 
Fecha de Ingreso: septiembre-2015
Ubicación: Cordoba
Mensajes: 15
Antigüedad: 9 años, 7 meses
Puntos: 0
DataKey para Update

Hola, en un web form capturo el DataKey de una seleccion de GridView, y este DataKey lo tengo que utilizar en otro WebForm para hacer un Update.....Sin embargo, cuando compilo y hago trabajar ello, no me da Error pero tampoco me Actualiza......Como deberia hacer valer el DataKey en el 2° WebForm para que funcione??

A continuacion, coloco Codigo:

Del 1° Form:


Código:
protected void GridRol_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Se obtiene la fila seleccionada del gridview
            GridViewRow row = GridRol.SelectedRow;
            // Obtengo el id de la entidad que se esta editando
            // en este caso de la entidad Curso
            ViewState["idRol"] = Convert.ToInt32(GridRol.DataKeys[row.RowIndex].Value);

            string Id_Rol = row.Cells[1].Text;
            string Descripcion = row.Cells[2].Text;

            Response.Redirect("ABMRol.aspx?Id_Rol=" + Id_Rol + "&Descripcion=" + Descripcion);
            
        }


Del 2° WebForm:


Código:
 protected void ButtonModificar_Click(object sender, EventArgs e)
        {

            string cadenaConexion = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                using (OleDbConnection cnn = new OleDbConnection(cadenaConexion))
            {
                cnn.Open();

                string query = @"Update Rol Set Descripcion = @Desc Where Id_Rol = @id";
                OleDbCommand com = new OleDbCommand(query, cnn);

                com.Parameters.AddWithValue("@Desc", TextDescripcion.Text);
                com.Parameters.AddWithValue("@id", ViewState["idRol"]);

                com.ExecuteScalar();
             }
        }

De esta forma que esta planteado en el 1° web form, me da el sig. Error:

"Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"


Bueno, necesito probar el codigo a los fines de ver si me Updatea ya que de otras fromas no lo he logrado..
abrazos, nos vemos,...



PERO, de esta otra forma en el 1° WebForm:

Código:
protected void GridRol_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Se obtiene la fila seleccionada del gridview
            GridViewRow row = GridRol.SelectedRow;
            
           
            string Id_Rol = row.Cells[1].Text;
            string Descripcion = row.Cells[2].Text;

            Response.Redirect("ABMRol.aspx?Id_Rol=" + Id_Rol + "&Descripcion=" + Descripcion);

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

No me da Error, como encabece este Post, pero tampoco me otorga ningun resultado.....

Como se haria para que funcione, si se puede?¡