Pop

38.Aplicaciones web.Carrito de compra(1). Curso de C# con Visual Studio 2017.

38- . Aplicaciones web. Carrito de compra(1)

  - En este capítulo del curso de programación en c# con visual studio 2017,vamos a empezar a crear el mecanismo necesario para que el usuario pueda hacer compras en nuestro proyecto de pruebas.Ya teniamos en nuestra página de pedidos un control de Treeview en el que mostrabamos todos los productos disponibles en nuestra base de datos.

- En este video os explico como traer y mostrar los datos del producto que seleccionemos en nuestro árbol.Si recordaís cuando cargabamos el TreeView via procedimiento almacenado, además del valor que mostramos en pantalla guardamos el idproducto en el valor de cada nodo del árbol. Ahora podemos utilizar este id de producto para mostrar los datos del producto seleccionado en pantalla:


- Vamos a poner paso a paso el código visto en el video:

  1. Añadimos en nuestra página web Pedidos.aspx los crontroles necesarios para mostrar los datos del producto seleccionado.
 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Pedidos.aspx.cs" Inherits="GestionVarios.Pedidos" MasterPageFile="~/Master.Master" %>

<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" runat="server">


    <div style="background-color: #FFFFFF">
        <table>
            <tr>
                <td align="left" width="30%">
                    <asp:TreeView ID="treeViewProductos" runat="server" OnSelectedNodeChanged="treeViewProductos_SelectedNodeChanged"></asp:TreeView>

                </td>
                <td align="center"  width="50%">
                  
                    <asp:Label ID="lblNombreProducto" runat="server"></asp:Label><br />
                    <asp:Label ID="lblDescripcion" runat="server"></asp:Label><br />
                    <asp:Label ID="lblPrecioDeCompra" runat="server"></asp:Label><br />
                    <asp:Label ID="lblCantidad" runat="server" Text="Unidades:" Visible="false"></asp:Label>
                    <asp:TextBox runat="server" ID="txtUnidades" Width="40px" Visible="false"></asp:TextBox>
                      <asp:RequiredFieldValidator ID="mreqEMail" runat="server" ControlToValidate="txtUnidades" ErrorMessage="*" Display="Dynamic" ForeColor="Red"  ></asp:RequiredFieldValidator><br />
                    <asp:RegularExpressionValidator ID="mregEMail" runat="server" ControlToValidate="txtUnidades" ErrorMessage="Introduzca un numero" ValidationExpression="^\d+$" Display="Dynamic"  ForeColor="Red"></asp:RegularExpressionValidator>
     
                 
                </td>
                <td  width="20%">

                    <asp:Button id="btnAgregar" runat="server" Text="Agregar al carro" Visible="false" OnClick="btnAgregar_Click"/>
                </td>
            </tr>
        </table>

    </div>
</asp:Content>

  2. En el fichero Pedidos.aspx.cs implementamos el evento del Treeview SelectNodeChanged para poder traer los datos de cada producto:

    protected void treeViewProductos_SelectedNodeChanged(object sender, EventArgs e)
        {
            TreeNode nodo = treeViewProductos.SelectedNode;
            CargarDatosProducto(nodo.Value);
            btnAgregar.Visible = true;
            txtUnidades.Visible = true;
            lblCantidad.Visible = true;
        }

        private void CargarDatosProducto(string idProducto)
        {
            SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);

            try
            {
                Con.Open();
                SqlCommand Com = Con.CreateCommand();
                Com.CommandText = "DameDatosProducto";
                Com.CommandType = CommandType.StoredProcedure;
                Com.Parameters.Add("@idProducto", SqlDbType.Int).Value = idProducto;
                SqlDataReader Rst = Com.ExecuteReader();


                while (Rst.Read())
                {
                    lblDescripcion.Text = "Detalles producto" + Rst["Descripcion"].ToString();
                    lblNombreProducto.Text = "Producto: " + Rst["Nombre"].ToString();
                    lblPrecioDeCompra.Text = "Precio por unidad:" + Rst["PrecioVenta"].ToString() + " € ";
                }

                Rst.Close();
                Com.Dispose();


            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            finally
            {
                if (Con.State == ConnectionState.Open)
                    Con.Close();
                Con.Dispose();
            }
        }

3. Creamos un procedimiento almacenado en SQL que nos devuelva los datos del producto seleccionado:


ALTER PROCEDURE [dbo].[DameDatosProducto]
   
    @idProducto int
AS
BEGIN

    SET NOCOUNT ON;

        SELECT Nombre,PrecioVenta,Descripcion FROM PRODUCTOS WHERE IdProducto=@idProducto;


END


No hay comentarios:

Publicar un comentario

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...