[ Foro de C# ]

DataKey para Update

29-Oct-2015 03:12
aaaaaaa bbbbbbb
0 Respuestas

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:


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:


 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:


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?¡




(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.)