Mi problemas es estoy elaborando un carrito de compras en ASPX C# hasta el momento eh podido implementar pero llevo unos dias atras tratando de implementar modificar mi grid se me podrian ayudar o almenos dar una pista de como realizar la sintaxis en el evento "gvProductos_RowUpdating" Eh probado mil formas pero la grilla no se actualiza con la nueva cantidad tanpoco el valor del subtotal calculado ya que esta en una lista que la cual la guardo en una variable de sesion que esta en memoria pero no logro dar con la posicion por lo cual no modifica nada y me devuelve los mismos valores de la grilla sera un gran alivio y se los agradeceria mucho o cualquier ayuda gracias de antemano ...
[email protected]
Código ASP:
Ver original
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AgregarCarrito.aspx.cs" Inherits="WebSiteElVeloz.AgregarCarrito" MasterPageFile="~/Principal.Master"%> <asp:Content ID ="Carrito" ContentPlaceHolderID ="Contenido" runat ="server" > <form id="frmcarrito" runat="server"> <h1 class="style1">Lista de Compras "Distribuidora El Veloz "</h1> <div > <h3><a href ="pedido.aspx" style="text-align: right ">Regresar...</a></h3> </div> <asp:GridView ID="gvProductos" runat="server" DataKeyNames ="IdProducto" AutoGenerateColumns="false" BorderStyle="None" GridLines ="None" onrowcommand="gvProductos_RowCommand" AutoGenerateEditButton="true" onrowcancelingedit="gvProductos_RowCancelingEdit" onrowediting="gvProductos_RowEditing" onrowupdating="gvProductos_RowUpdating" > <Columns > <asp:TemplateField > <ItemTemplate > <asp:image ID ="lblImagen" runat ="server" width="130px" ImageUrl ='<%# "~/IMAGENES/" + Eval("Imagen") %>' /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-VerticalAlign ="Top" ItemStyle-HorizontalAlign ="Left" HeaderText ="Descripcion" > <ItemTemplate > <asp:Label ID ="lblnombre" runat ="server" Text = '<%# Eval("Nombre") %>' ForeColor="#006699" Font-Bold="true" Font-Size="Small" /> <br/> <asp:Label ID ="lbldescripcion" runat ="server" Text = '<%# Eval("Descripcion") %>' ForeColor="#006699" Font-Bold="true" Font-Size="Small" /> <br/> </ItemTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-VerticalAlign ="Top" ItemStyle-HorizontalAlign ="Left" HeaderText =" Precio " > <ItemTemplate > <asp:Label ID ="lblPrecio2" runat ="server" Text = '<%# "S/. " + Eval("Precio") %>' Font-Bold="true" ForeColor="#006699" Font-Size="Small" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-VerticalAlign ="Top" ItemStyle-HorizontalAlign ="Center" HeaderText ="Cantidad" > <EditItemTemplate> <asp:DropDownList ID="ddlcant" runat="server"> </asp:DropDownList> </EditItemTemplate> <ItemTemplate > <asp:Label ID ="lblCant" runat ="server" Text = '<%# Eval("Cantidad ") %>' Font-Bold="true" ForeColor="#006699" Font-Size="Small" ></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField ItemStyle-VerticalAlign ="Top" ItemStyle-HorizontalAlign ="Left" HeaderText =" SubTotal " > <ItemTemplate > <asp:Label ID ="lblSubt" runat ="server" Text = '<%# "S/. " + Eval("SubTotal") %>' Font-Bold="true" ForeColor="#006699" Font-Size="Small" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField > <ItemTemplate > <asp:LinkButton ID ="lkbImagen" runat ="server" CommandName ="borrar" CommandArgument = '<%# Eval("IdProducto") %>' > <img alt="Eliminar" src="images/cart_remove.png" width ="20px" style ="border: none" /> </asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <div class="style1"><asp:Button ID="btncompra" runat="server" Text="Comprar Productos" ForeColor="#006699" BackColor="White" BorderColor="#006699" onclick="btncompra_Click"/></div> </form> </asp:Content> <asp:Content ID="Content1" runat="server" contentplaceholderid="head"> </asp:Content> using MySql.Data; using MySql.Data.MySqlClient; namespace WebSiteElVeloz { public partial class AgregarCarrito : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { btncompra.Attributes.Add("onclick", "javascript:alert('Comprobante Generado');"); if (!Page.IsPostBack) { string codigoproducto = Page.Request.QueryString["codigo"]; if (string.IsNullOrEmpty(codigoproducto)) Page.Response.Redirect("~/pedido.aspx"); productosDAL producto = new productosDAL(); producto.AbrirConex(ConfigurationManager.ConnectionStrings["cadena"].ConnectionString); MySqlDataReader dr; dr = producto.ObtenerDatosProducto(int.Parse(codigoproducto)); RegistroCarroCompra regCarroCompra = new RegistroCarroCompra(); while (dr.Read()) { regCarroCompra = new RegistroCarroCompra(); regCarroCompra.IdProducto = int.Parse(dr["id"].ToString()); regCarroCompra.Nombre = dr["nombrecomercial"].ToString(); regCarroCompra.Precio = decimal.Parse(dr["precioventa"].ToString()); regCarroCompra.Imagen = dr["imagen"].ToString(); regCarroCompra.Descripcion = dr["empresa"].ToString(); regCarroCompra.Cantidad = 1; regCarroCompra.SubTotal = regCarroCompra.Cantidad * regCarroCompra.Precio; } producto.CerrarConex(ConfigurationManager.ConnectionStrings["cadena"].ConnectionString); List<RegistroCarroCompra> ListaRegCarroCompra = null; if (Session["CarroCompras"] == null) ListaRegCarroCompra = new List<RegistroCarroCompra>(); else ListaRegCarroCompra = (List<RegistroCarroCompra>)Session["CarroCompras"]; if (!ProductoYaExiste(int.Parse(codigoproducto), ListaRegCarroCompra)) ListaRegCarroCompra.Add(regCarroCompra); Session["CarroCompras"] = ListaRegCarroCompra; gvProductos.DataSource = Session["CarroCompras"]; gvProductos.DataBind(); } } protected void gvProductos_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "borrar") borrar(int.Parse(e.CommandArgument.ToString())); } private void borrar(int codigo) { // Implemementar List<RegistroCarroCompra> ListaRegCarroCompra = null; ListaRegCarroCompra = (List<RegistroCarroCompra>)Session["CarroCompras"]; int posicion = 0; foreach (RegistroCarroCompra item in ListaRegCarroCompra ) { if (item.IdProducto == codigo) break; posicion += 1; } ListaRegCarroCompra.RemoveAt(posicion ); Session["CarroCompras"] = ListaRegCarroCompra; gvProductos.DataSource = Session["CarroCompras"]; gvProductos.DataBind(); } protected void gvProductos_RowEditing(object sender, GridViewEditEventArgs e) { gvProductos.EditIndex = e.NewEditIndex; int id = Convert.ToInt32(gvProductos.DataKeys[e.NewEditIndex].Value); gvProductos.DataSource = Session["CarroCompras"]; gvProductos.DataBind(); DropDownList combo = gvProductos.Rows[e.NewEditIndex].FindControl("ddlcant") as DropDownList; if (combo != null) { for(int i =1;i <=50;i ++){ combo.Items.Add(i.ToString()); combo.DataBind(); } } } protected void gvProductos_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvProductos.EditIndex = -1; gvProductos.DataSource = Session["CarroCompras"]; gvProductos.DataBind(); } protected void gvProductos_RowUpdating(object sender, GridViewUpdateEventArgs e) { int id = Convert.ToInt32(gvProductos.DataKeys[e.RowIndex].Value); DropDownList combo = gvProductos.Rows[e.RowIndex].FindControl("ddlcant") as DropDownList; int cant = Convert.ToInt32(combo.SelectedValue); } } public struct RegistroCarroCompra { public int IdProducto { get; set; } public string Nombre { get; set; } public string Descripcion { get; set; } public decimal Precio { get; set; } public decimal SubTotal { get; set; } public int Cantidad { get; set; } public string Imagen { get; set; } } }