22. december 2006 - 11:03
Der er
6 kommentarer og 1 løsning
Session state og dropdown list problem
Hej Jeg har et problem med en dropdown-list control i en asp.net webform i asp.net 1.1. Jeg bruge Session og ArrayList for at gemme vaglte items af en "Shopping cart lignende program - uden database" i session og efter udføring af nogle beregninger for prisen vises der en liste af de valgte items plus prisen. Problemet er, at i min først dropdown-list har jeg 6 item, hvor hver har sin egen "Text" og "Value". Value af den 6. item ligner value af den første - og selv om Teksten er forskellige, når jeg vil prøve at vise teksten af den 6. item i oversigtssiden, vises der teksten af den første item. Ret mærkelige problem for mig som begynder. Jeg glæder mig meget at få hjælp. God Jul.
Annonceindlæg fra Cognizant
22. december 2006 - 21:58
#3
Jeg kan desværre ikke ændre på deres value. De er forskellige produkter og tilfældigvis er det tal for 2 items i denne dropdown-liste er de samme. Her kommer koderne: Global.asax.cs: -------------- ... protected void Session_Start(Object sender, EventArgs e) { Session["Cart"] = new ArrayList(); } ... --------------------------- Bestilling.cs: -------------- using System; using ... namespace Salg { public class Bestilling { protected System.Web.UI.WebControls.TextBox txtStorrelse; protected System.Web.UI.WebControls.TextBox txtAntal; protected System.Web.UI.WebControls.DropDownList listProdukt; private double _grundpris; private double _storrelse; private double _antal; private double _pris; private string _produktString; public Bestilling(double grundpris, double storrelse, double antal, double produkt, double pris, string produktString) { _grundpris = grundpris; _storrelse = storrelse; _antal = antal; _produkt = produkt; _pris = pris; _produktString = produktString; } public double Grundpris { get { return _grundpris; } set { _grundpris = value; } } public double Storrelse { get { return _storrelse; } set { _storrelse = value; } } public double Antal { get { return _antal; } set { _antal = value; } } public double Produkt { get { return _produkt; } set { _produkt = value; } } public double Pris { get { return _pris; } set { _pris = value; } } public string ProduktString { get { return _produktString; } set { _produktString = value; } } } } --------------------------------- bestil.aspx.cs: ----------------- using System; using... namespace Salg { public class bestil : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox txtStorrelse; protected System.Web.UI.WebControls.TextBox txtAntal; protected System.Web.UI.WebControls.DropDownList listProdukt; protected System.Web.UI.WebControls.Button btnFortsaet; private double _grundpris; private double _storrelse; private double _antal; private double _Produkt; private double _pris; private string _produktString; private void Page_Load(object sender, System.EventArgs e) { Response.CacheControl = "no-cache"; } public double Storrelse { get { _storrelse = Double.Parse(txtStorrelse.Text); return _storrelse; } set { _storrelse = value; } } public double Grundpris { get { _grundpris = Antal * Storrelse * 0.0026; return _grundpris; } set { _grundpris = value; } } public double Produkt { get { _produkt = Grundpris - (Grundpris * Double.Parse(listProdukt.SelectedItem.Value)); return _produkt; } set { _produkt = value; } } public double Antal { get { _antal = Double.Parse(txtAntal.Text); return _antal; } set { _antal = value; } } public double Pris { get { if (Antal < 20000) _pris = Produkt * (2000/(2000 + Double.Parse(txtAntal.Text))) ; else _pris = Produkt * ((0.05) + (8200 / (8200 + Double.Parse(txtAntal.Text)))); return _pris; } set { _pris = value; } } public string ProduktString { get{ _produktString = listProdukt.SelectedItem.Text; return _produktString; } set { _produktString = value; } } private void AddItem(double grundpris, double storrelse, double antal, double produkt, double pris, string produktString) { ArrayList cart = (ArrayList)Session["Cart"]; cart.Add(new Bestilling(Grundpris, Storrelse, Antal, Produkt, Pris, ProduktString)); } #region Web Form Designer generated code ... ... } #endregion private void btnFortsaet_Click(object sender, System.EventArgs e) { AddItem(Grundpris, Storrelse, Antal, Produkt, Pris, ProduktString); Response.Redirect("Bestillingsoversigt.aspx"); } } } ---------------------------------- Bestillingsoversigt.aspx.cs: --------------------------- using System; using.... namespace Salg { public class Bestillingsoversigt : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblOversigt; protected System.Web.UI.WebControls.Label lblTotal; protected System.Web.UI.WebControls.Button btnSlet; protected System.Web.UI.WebControls.Button btnFlere; private void Page_Load(object sender, System.EventArgs e) { Response.CacheControl = "no-cache"; double totalCost = 0.00; ArrayList cart = (ArrayList)Session["Cart"]; foreach (Bestilling item in cart) { totalCost += item.Pris; lblOversigt.Text += "Produkt: " + item.ProduktString + "<br/>" + "Størrelse i CM2: " + item.Storrelse + "<br/>" + "Antal: " + item.Antal + "<br/>" + "Pris: " + item.Pris.ToString("c") + "<br/><br/>"; } lblTotal.Text = "Total pris: " + (totalCost + 260).ToString("c"); } #region Web Form Designer generated code ... ... } #endregion private void btnFlere_Click(object sender, System.EventArgs e) { Response.Redirect("bestil.aspx"); } private void btnSlet_Click(object sender, System.EventArgs e) { //sletter alle gemte session-data Session.Abandon(); Response.Redirect("bestil.aspx"); } } } ------------------------------------------------- Og den dropdown-liste, som giver mig hovedpine: ---------------------- <asp:dropdownlist id="listProdukt" runat="server" Width="200px"> <asp:ListItem Value="-- Vælg --" Selected="True">-- Vælg --</asp:ListItem> <asp:ListItem Value="0,005">Produkt 1</asp:ListItem> <asp:ListItem Value="0,00">Produkt 2</asp:ListItem> <asp:ListItem Value="0,0025">Produkt 3</asp:ListItem> <asp:ListItem Value="0,01">Produkt 4</asp:ListItem> <asp:ListItem Value="0,0005">Produkt 5</asp:ListItem> <asp:ListItem Value="0,005">Produkt 6</asp:ListItem> </asp:dropdownlist>
23. december 2006 - 19:49
#4
du må lige uddybe hvorfor du ikke kan ændre på value i disse to... du taler en anelse for indforstået=) <asp:ListItem Value="0,005">Produkt 1</asp:ListItem> <asp:ListItem Value="0,005">Produkt 6</asp:ListItem>
23. december 2006 - 23:06
#5
Det er fordi disse values går i en beregning, som er basis for prisbergening, og jeg ken ikke bare ændre på dem. .... public double Produkt { get { _produkt = Grundpris - (Grundpris * Double.Parse(listProdukt.SelectedItem.Value)); return _produkt; } .... ....
24. december 2006 - 12:41
#6
Hej Jeg kunne ikke løse problemet programmatisk. Men jeg har nu løst mit problem ved at ændre på value af 6. item ved at sætte det til: 0,005000000009 i stedet for 0,005, så dets value er anderledes end 1. item og jeg kan godt se teksten "Produkt 6" i oversigtssiden. Strange!