Mensaje dentro de Principiantes

Responder 
#1 - 25/09/2013 12:39:02 Reporta abuso | Link Permanente
Alexis
Usuario no registrado
datagrid

Responder Citar
Buenas tengo este código que debe permitir hacer un UPDATE en la base de datos pero no realiza el cambio, alguien me puede decir donde está el error?
gracias...


        

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
public partial class admin : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        estableceDataBinding();
    }
 public  void estableceDataBinding(){
SqlConnection conexion =
new SqlConnection(@"Data Source=PC-TOSH\misql ;Initial Catalog=MIBASEDEDATOS;Integrated Security=True");
SqlDataAdapter comando =
new SqlDataAdapter("select referencia, foto_frontal,modelo,precio,talla,cantidad,stock from Detalles where stock='si' ", conexion);
DataSet ds = new DataSet();
comando.Fill(ds, "Detalles");
tabla.DataSource = ds.Tables["Detalles"].DefaultView;
tabla.DataBind();
}

 public void pulsadoEdicion(object Sender, DataGridCommandEventArgs e)
 {
tabla.SelectedIndex=-1;
tabla.EditItemIndex = e.Item.ItemIndex;
estableceDataBinding();
}
 public void pulsadoCancelacion(object Sender, DataGridCommandEventArgs e)
 {
tabla.EditItemIndex=-1;
tabla.SelectedIndex=-1;
estableceDataBinding();
}
 public void pulsadoActualizar(object Sender, DataGridCommandEventArgs e)
 {
SqlConnection conexion =
new SqlConnection(@"Data Source=PC-TOSH\misql ;Initial Catalog=mibasededatos;Integrated Security=True");
String strComando;
//String txtcantidad=((TextBox)e.Item.Cells[3].Controls[0]).Text;



String txtcantidad = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
String txtstock=((TextBox)e.Item.Cells[4].Controls[0]).Text;
Response.Write(txtcantidad);
Response.Write(txtstock);
//Aquí siempre me muestra la cantidad y stock actual pero cuando realizo la modificación, sigue mostrando la cantidad y stock actual, como si no me cogiera los nuevos datos.


strComando = "UPDATE Detalles SET cantidad='" + txtcantidad + "', stock='" +
txtstock + "'WHERE referencia=" + tabla.DataKeys[(int)e.Item.ItemIndex];
SqlCommand comando = new SqlCommand(strComando, conexion);
comando.Connection.Open();
comando.ExecuteNonQuery();
tabla.EditItemIndex=-1;
tabla.SelectedIndex=-1;
estableceDataBinding();

}

}

<asp:DataGrid ID="tabla" runat="server" BorderWidth="1" GridLines="Both" HeaderStyle-Font-Bold="True"
            HeaderStyle-BackColor="gray" AutoGenerateColumns="False" OnEditCommand="pulsadoEdicion"
            OnCancelCommand="pulsadoCancelacion" OnUpdateCommand="pulsadoActualizar" DataKeyField="referencia">
            <Columns>
                <asp:EditCommandColumn EditText="Editar" CancelText="Cancelar" UpdateText="Actualizar"
                    HeaderText="Edición" />

                <asp:BoundColumn DataField="foto_frontal" HeaderText="Foto" ReadOnly="True" />
                <asp:BoundColumn DataField="referencia" HeaderText="Referencia" ReadOnly="True"/>
                <asp:BoundColumn DataField="cantidad" HeaderText="Cantidad" />
                <asp:BoundColumn DataField="stock" HeaderText="Stock" />
                <asp:BoundColumn DataField="modelo" HeaderText="Modelo" ReadOnly="True"/>
                <asp:BoundColumn DataField="precio" HeaderText="Precio" ReadOnly="true"/>
                <asp:BoundColumn DataField="talla" HeaderText="Talla" ReadOnly="True" />
            </Columns>
        </asp:DataGrid>

Volver arriba