Avatar billede mema Nybegynder
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.
Avatar billede kalp Novice
22. december 2006 - 13:10 #1
må man se koden så vi slipper for at gætte?
Avatar billede snepnet Nybegynder
22. december 2006 - 19:03 #2
Sørg for at de har forskellig value.
Mvh
Avatar billede mema Nybegynder
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>
Avatar billede kalp Novice
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>
Avatar billede mema Nybegynder
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;
}
....
....
Avatar billede mema Nybegynder
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!
Avatar billede mema Nybegynder
20. januar 2007 - 12:51 #7
Jeg lukker denne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester