Avatar billede truelz Nybegynder
28. januar 2009 - 21:03 Der er 8 kommentarer og
1 løsning

ASP.net form elementer i listview

Hej
Jeg er ved at lave en form for indkøbsliste til en malerforretning, hvor man skal kunne vælge en størrelse spand og en farve og et antal, hvorefter man kan få beregnet en pris og tilføje varen til en indkøbskurv.

Se siden her:
http://jyskmaling.dk/expkategori.aspx?kategori=7

Listen er bygget over en ListView, hvori der så indsættes form elementer for hvert item. Knapperne har CommandName=Select, hvorved Listview.SelectedIndexChanged bliver trigget når knapperne bliver klikket. I den triggede funktion fanger jeg form elementernes værdi som følger:

int farve = Convert.ToInt32(((DropDownList)ListView1.Items[ListView1.SelectedIndex].FindControl("ddlFarve")).SelectedValue);

Jeg får her returneret den farve brugeren nu har valgt.

Problemet er at form elementernes værdi ikke bliver vist i browseren, når siden bliver postet. Hvordan kan jeg bevare brugerens valg efter siden har været en tur omkring serveren?
Avatar billede jokkejensen Novice
28. januar 2009 - 21:17 #1
Hvordan ser din [beregn pris] ud frontend ?

Det undrer mig den ikke afvikler javascript, et postback, i stedet for at "submitte formen". og ens viewstate er sindsyg tung..
Avatar billede truelz Nybegynder
28. januar 2009 - 21:23 #2
Jeg har planlagt at tilføje noget AJAX når jeg har det andet til at virke. Men ja, det kan jo selvfølgelig ligefrem være løsningen på mine problemer.
Avatar billede jokkejensen Novice
28. januar 2009 - 21:42 #3
du løber en kæmpe omvej ved ikke lige at sætte dig kort ind i den lidt anderledes post verden i asp.net.

Tag evt at kigge kort ind på www.ajax.net hvis det skal være asynkront. Du får rigtigt mange backend (C#) styret events foræret gennem javascript, Jquery og en lang række kontroller.

Sikkert også nogle themes, hvis det ikke lige er designet man brænder for :)

/J
Avatar billede truelz Nybegynder
28. januar 2009 - 22:25 #4
Jeg ved det... Jeg synes også selv det virker til jeg gør tingene unødvendigt besværlige i den her verden. Men jeg prøver at udnytte så mange af asp.net's goder som muligt, efter at have skrevet asp i mange år.
Men er det ikke rigtigt at placere en form rundt om hele siden? Og præsentere produkterne i et ListView?
Avatar billede jokkejensen Novice
29. januar 2009 - 09:08 #5
jo præcis.

Men brug en <asp:button runat="server" onclick="minFunction" text="Beregn pris" />

og i din C#, codebehind noget ala:

protected void minFunction(Object o, EventArgs E)
{
int farve = Convert.ToInt32(((DropDownList)ListView1.Items[ListView1.SelectedIndex].FindControl("ddlFarve")).SelectedValue);

  Response.Write(farve); //skulle gerne udskriver ID på farve i toppen af doc, og beholde værdier i selects
}

/J
Avatar billede truelz Nybegynder
29. januar 2009 - 09:34 #6
Det var også det første jeg prøvede. Men koden bliver afviklet før Listview-koden, så så når jeg aflæser "ListView1.SelectedIndex", bliver det "gamle" index returneret - og siden kommer med en fejl første gang den bliver postet, idét ListView1 ikke er instantieret.
Avatar billede jokkejensen Novice
30. januar 2009 - 23:13 #7
nej det er fordi du databinder ved postback..

Wrap det kode du binder data til selectboxen ala:

if(!Page.IsPostBack)
{
Control.DataSource = DS;
Control.DataBind();
}

Som sagt ville det ikke skade at gå to skridt tilbage, og lige læse op :)
Avatar billede truelz Nybegynder
01. februar 2009 - 12:42 #8
Jeg benytter mig af en sqldatasource, så jeg laver ikke nogen databind til hverken listview eller dropdownlists programmatisk. Så databinder den vil ikke ved postback?
Avatar billede truelz Nybegynder
25. januar 2011 - 21:45 #9
Lukker
Jeg er blevet meget klogere siden :)
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