none
Accesar a un elemento de clase C# asp.net RRS feed

  • Pregunta

  • Buenas tardes

    Soy algo nuevo en C y no estoy tan bien familiarizado con sus funciones.  En mi app obtengo los datos de cierto product y quiero agregar el producto seleccionado al carrito de compras pero por alguna razon, al tratar de llamar a la funcion que esta en la clase de carrito de compras este me marca un error.

    Anexo el codigo y la parte del error...

    Clase Producto

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Configuration;
    namespace mrosite
    {
        public class Product
        {
            public int PCode { get; set; }
            public string PartNumber { get; set; }
            public string Description { get; set; }
            public int Available { get; set; }
            public decimal Price { get; set; }
        
    
            public Product(int pcode)
            {
            this.PCode = pcode;
                /* Begin Searh the product code into the database */
                string SqlStr = "SELECT [PCode], [PartNumber], [Description], [PStock], [Price] FROM Products WHERE PCode=@PCode";
                DataSet SqlDs = new DataSet();
                SqlCommand SqlCmd = new SqlCommand(SqlStr);
                String connStr = ConfigurationManager.ConnectionStrings["TOOLCRIB"].ConnectionString;
                SqlConnection SqlConn = new SqlConnection(connStr);
                SqlDataAdapter SqlAdap = new SqlDataAdapter();
                SqlCmd.CommandType = CommandType.StoredProcedure;
                SqlCmd.Parameters.AddWithValue("@PCode", PCode);
                SqlCmd.Connection = SqlConn;
                SqlAdap.SelectCommand = SqlCmd;
                SqlAdap.Fill(SqlDs, "Prod");
                SqlConn.Close();
    
                this.PCode= Convert.ToInt32(SqlDs.Tables["Prod"].Rows[0][0]);
                this.PartNumber = SqlDs.Tables["Prod"].Rows[0][1].ToString();
                this.Description = SqlDs.Tables["Prod"].Rows[0][2].ToString();
                this.Available = Convert.ToInt32(SqlDs.Tables["Prod"].Rows[0][3]);
                this.Price = Convert.ToDecimal(SqlDs.Tables["Prod"].Rows[0][4]);
    
            }
        }
    }

    Clase Carrito de Compras

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    /**
     * The ShoppingCart class
     * 
     * Holds the items that are in the cart and provides methods for their manipulation
     */
    namespace mrosite
    {
    
        public class ShoppingCart : Page
        {
            public DataTable ShopDt { get; set; }
    
            public void CreateShopCart()
            {
                //check if datatable have not use
                if (ShopDt.TableName.Contains("tblShopCart") == true)
                {
                    return;
                }
                else
                {
                    //create new datatable
                    ShopDt = new DataTable("tblShopCart");
                    ShopDt.Columns.Add(new DataColumn("pcode", typeof(int)));
                    ShopDt.Columns.Add(new DataColumn("pn", typeof(string)));
                    ShopDt.Columns.Add(new DataColumn("desc", typeof(string)));
                    ShopDt.Columns.Add(new DataColumn("available", typeof(int)));
                    ShopDt.Columns.Add(new DataColumn("price", typeof(decimal)));
                }
                Session["ShopCart"] = ShopDt;
            }
    
            public void AddToCart(int PCode, string Pn, string Desc, int Available, decimal Price) 
            {
                DataTable ShopDt = Session["tblShopCart"] as DataTable;
                if (ShopDt.Rows.Count <= 0)
                {
                    DataRow dr = ShopDt.NewRow();
                    dr["pcode"] = PCode;
                    dr["pn"] = Pn;
                    dr["desc"] = Desc;
                    dr["available"] = Available;
                    dr["price"] = Price;
                    ShopDt.Rows.Add(dr);
                    Session["tblShopCart"] = ShopDt;
                    return;
                }
                else
                {
                    for (int i = 0; i < ShopDt.Rows.Count; i++)
                    {
                        if (Convert.ToInt32(ShopDt.Rows[i]["pcode"]) == PCode)
                        {
                            ShopDt.Rows[i]["pn"] = Pn;
                            ShopDt.Rows[i]["desc"] = Desc;
                            ShopDt.Rows[i]["available"] = Available;
                            ShopDt.Rows[i]["price"] = Price;
                            Session["tblShopCart"] = ShopDt;
                            return;
                        }
                        DataRow dr = ShopDt.NewRow();
                        dr["pcode"] = PCode;
                        dr["pn"] = Pn;
                        dr["desc"] = Desc;
                        dr["available"] = Available;
                        dr["price"] = Price;
                        ShopDt.Rows.Add(dr);
                        Session["tblShopCart"] = ShopDt;
                    }
                }
    
            }
    
            public void DelFromCart(int PCode)
            {
                DataTable ShopDt = Session["tblShopCart"] as DataTable;
                if (ShopDt.Rows.Count <= 0)
                {
                    for (int i = ShopDt.Rows.Count - 1; i >= 0; i++)
                    {
                        DataRow dr = ShopDt.Rows[i];
                        if (Convert.ToInt32(dr["pcode"]) == PCode)
                        {
                            dr.Delete();
                        }
                        ShopDt.AcceptChanges();
                        Session["tblShopCart"] = ShopDt;
                    }
                }
            }
        }
    }
    
    Aqui tengo el error en mi pagina

    protected void GrdBrowse_RowCommand1(object sender, GridViewCommandEventArgs e)
            {
                    if (e.CommandName == "SendCart")
                {
                    //Determine the RowIndex of the Row whose Button was clicked.
                    int index = Convert.ToInt32(e.CommandArgument);
    
                    //Reference the GridView Row.
                    GridViewRow row = GrdBrowse.Rows[index];
    
                    //Fetch value of Product Code
                    int myId = Convert.ToInt32(row.Cells[1].Text);
    
                    //Set value for add to shopping cart
                    Product Prod = new Product(Convert.ToInt32(row.Cells[1].Text));
    
                    //AQUI TENGO EL ERROR
                    ShoppingCart NewCart = new ShoppingCart.AddToCart(Prod.PCode, Prod.PartNumber, Prod.Description, Prod.Available, Prod.Price);
                    //----------------------------------------------------------------------                
                    Response.Redirect("ViewCart.aspx");
                }
            }
    Gracias por su ayuda y saludos

    viernes, 15 de febrero de 2019 23:19

Respuestas

  • No debería ser ese código así? Fijate en () 

    ShoppingCart NewCart = new ShoppingCart().AddToCart(Prod.PCode, Prod.PartNumber, Prod.Description, Prod.Available, Prod.Price

    También podrias

    ShoppingCart NewCart = new ShoppingCart();
    NewCart.AddToCart(Prod.PCode, Prod.PartNumber, Prod.Description, Prod.Available, Prod.Price) ;


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 17 de febrero de 2019 7:21
    Moderador

Todas las respuestas

  • Hola. Cuando dices que te marca error, obtienes algún mensaje? Puedes ponernos el mensaje completo? De todas formas viendo tu código te recomiendo que en tu metodo AddToCart() use como parámetro euna clase de tipo Product y dentro sde dicho método acceder a las propiedades del mismo. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 15 de febrero de 2019 23:56
    Moderador
  • //AQUI TENGO EL ERROR

    ShoppingCart NewCart = newShoppingCart.AddToCart(Prod.PCode, Prod.PartNumber, Prod.Description, Prod.Available, Prod.Price);

    The type name 'AddToCart' does not exist in the type 'ShoppingCart

    sábado, 16 de febrero de 2019 15:58
  • No debería ser ese código así? Fijate en () 

    ShoppingCart NewCart = new ShoppingCart().AddToCart(Prod.PCode, Prod.PartNumber, Prod.Description, Prod.Available, Prod.Price

    También podrias

    ShoppingCart NewCart = new ShoppingCart();
    NewCart.AddToCart(Prod.PCode, Prod.PartNumber, Prod.Description, Prod.Available, Prod.Price) ;


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 17 de febrero de 2019 7:21
    Moderador