Hola, yo ando metido en una aplicación de carrito, y uso más o menos lo mismo para crear el gridview. Para insertar los articulos en el carro utilizo un GridView con una columna de tipo image button, que me agrega los artículos. Tengo dos problemas:
1 - Cuando clicko el botón para agregar un artículo, éste se me agrega dos veces al GV. He leido que es problema del src de la imagen botón, pero no encuentro más que una src, y apunta correctamente a la imagen... mi código:
Código vb:
Ver originalCódigo .aspx
<asp:GridView ID="GVBebidas" runat="server" AllowPaging="True" AllowSorting="True"
BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px"
CellPadding="4" DataSourceID="BebidasBD" AutoGenerateColumns="False" PageSize="5">
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<Columns>
<asp:ImageField DataImageUrlField="RutaImagen" DataImageUrlFormatString="~/Images/Catalogo/thumbnail/{0}" HeaderText="Imagen">
<ItemStyle Height="100px" Width="100px" />
</asp:ImageField>
<asp:BoundField DataField="Nombre" HeaderText="Nombre" SortExpression="Nombre" />
<asp:BoundField DataField="Descripcion" HeaderText="Descripcion" SortExpression="Descripcion" />
<asp:BoundField DataField="Precio" HeaderText="Precio" SortExpression="Precio" />
<asp:BoundField DataField="RutaImagen" HeaderText="RutaImagen" SortExpression="RutaImagen"
Visible="False" />
<asp:ButtonField ButtonType="Image" CommandName="Añadir" ImageUrl="images/CarroRojo.jpg"
Text="Añadir" />
</Columns>
<RowStyle BackColor="Silver" ForeColor="#330099" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
<AlternatingRowStyle BackColor="Gainsboro" />
</asp:GridView>
Código del .vb
' Sub Añadir_Articulo(ByVal s As Object, ByVal e As EventArgs)
Sub Añadir_Articulo()
If Session("Carrito") Is Nothing Then
CrearCarro()
End If
Dim DRArticulo As DataRow
Dim MiCarro As DataTable
Micarro = Session("Carrito")
DRArticulo = Micarro.NewRow()
DRArticulo("Cantidad") = "2"
DRArticulo("Articulo") = "Vino Cantino"
DRArticulo("Precio") = "64.87"
Micarro.Rows.Add(DRArticulo)
Session("Carrito") = Micarro
End Sub
Sub GVBebidas_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GVBebidas.RowCommand
If e.CommandName = "Añadir" Then
Añadir_Articulo()
Label1.Text = "Articulo Añadido"
End If
End Sub
2 - Tengo una página para que el uusuario pueda ver el estado de su carro. Quiero que el GridView muestre su contenido al cargar la página... pero no lo muestra. En cambio, si pongo un botón que llame a "Añadir_Articulo", añade el artículo y se muestra el contenido del GridView.
Código vb:
Ver originalPrivate Sub Page_Load(ByVal s As Object, ByVal e As EventArgs)
If Not Page.IsPostBack And Session("Carrito") Is Nothing Then
CrearCarro()
Else
Micarro = Session("Carrito")
End If
GridView1.DataSource = Micarro
GridView1.DataBind()
GridView1.Visible = True
End Sub
Algún consejo? Gracias!!