Prijs krijgen

Status
Niet open voor verdere reacties.

bartwebdesign

Gebruiker
Lid geworden
16 jul 2006
Berichten
443
Ik heb een listview met 4 kolommen.

Aantal, omschrijving, prijs per stuk en prijs totaal.

Nu wil ik van alle items de prijs totaal krijgen en die in een berekening zetten.
Deze moet dan het totale bedrag geven.

Hoe doe ik dit?
 
Wat te denken van : Prijs totaal = Aantal * Prijs per stuk.
 
Dat weet ik, maar hoe kan ik dat van elk item in de listview krijgen?
Dus alle totalen bij elkaar optellen?
 
Zou zo moeten als ik je goed begrijp
Code:
 ' Zoek de kolom met prijsinformatie:
    Dim iPriceIndex As Integer = -1
    For Each xCol As ColumnHeader In myListView.Columns
      If xCol.Text.ToLower = "price" Then
        iPriceIndex = xCol.Index
        Exit For
      End If
    Next

    ' Tel nu alle waarden in de prijskolom op:
    Dim iSum As Integer = 0
    For Each xItem As ListViewItem In myListView.Items
      iSum += Convert.ToInt32(xItem.SubItems(iPriceIndex).Text)
    Next

    txtSum.Text = iSum.ToString()
 
[CPP] For i As Integer = 0 To ListView1.Items.Count - 1
Dim Aantal As Integer = 0
Integer.TryParse(ListView1.Items(i).Text, Aantal)
Dim PrijsPS As Double = 0
Double.TryParse(ListView1.Items(i).SubItems(1).Text.Replace(".", ","), PrijsPS)
ListView1.Items(i).SubItems(2).Text = Aantal * PrijsPS
Next[/CPP]

Uitkomst:

72951893.jpg
 
Laatst bewerkt:
@old Hippy: als ik jou code probeer krijg ik InvalidArgument=Waarde van -1 is niet geldig voor index.

@JoZ1: Het uitrekenen van het aantal * de prijs gaat al, ik moet alle bedragen in de laatste kolom bij elkaar op tellen.
 
Hi Bartwebdesign
Je hebt wel de code aangepast aan jouw gegevens????
Laat anders even je code zien
 
Ik heb al een andere oplossing gevonden, had de .ToLower niet weggehaald.

Maar nu loop ik tegen een ander probleem aan.
ik krijg bij je code nu De indeling van de invoertekenreeks is onjuist.

De fout is bij:
iSum += Convert.ToInt32(xItem.SubItems(iPriceIndex).Text)
 
Voorbeeldje:

[CPP]Dim Totaal As Double = 0
For i As Integer = 1 To ListView1.Items.Count - 1
Dim Prijs As Double = 0
Double.TryParse(ListView1.Items(i).SubItems(3).Text.Replace(".", ","), Prijs)
Totaal += Prijs
Next[/CPP]

Die '3' (bij SubItems) geldt dus als de 4e kolom de 'prijskolom' is.
 
Laatst bewerkt:
Ik krijg bij je code InvalidArgument=Waarde van 2 is niet geldig voor index. Parameternaam: index

Als ik de code iets wijzig, krijg ik alleen 0

Code:
                Dim Totaal As Double = 0
        For i As Integer = 0 To ListView1.Items.Count - 1
            Dim prijs As Double = 0
            Double.TryParse(ListView1.Items(i).SubItems(3).Text.Replace(".", ","), prijs)
            Totaal += prijs
        Next
 
Je moet de code dan ook wel even aanpassen naar jouw situatie. Hoeveel kolommen je hebt etc. Heb ik maar even vetgedrukt in de vorige post ;).

De code zou namelijk wel moeten werken:

[CPP] Dim Totaal As Double = 0
For i As Integer = 1 To ListView1.Items.Count - 1
Dim Prijs As Double = 0
Double.TryParse(ListView1.Items(i).Text.Replace(".", ","), Prijs)
Totaal += Prijs
Next
Label1.Text = "Totaal: " & Totaal.ToString[/CPP]

In dit voorbeeld:

78190933.jpg
 
Laatst bewerkt:
Heb de fout al gevonden.
Doordat ik het euro teken erin heb staan, doet hij het niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan