Announcement

Collapse
No announcement yet.

In ListView nach bestimmtem Text suchen und counten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • In ListView nach bestimmtem Text suchen und counten

    Guten Tag,

    in einer ListView die als Warenkorb dient, werden verschiedene Artikel eingefügt und angezeigt. Einige dieser Artikel sollen nun gefiltert und gezählt werden. Das Ergebnis (Anzahl gleiche Atrikel innerhalb der ListView) wird in einer TextBox angezeigt. Mit folgendem Code geht das bereits recht gut. Die Zählung funktioniert aber noch nicht korrekt, da immer alle Artikel in der ListView gezählt werden, und nicht nur jener der per "FindItemWithText" gesucht wird. Hat jemand eine Lösung für mein Problem? Vielen Dank.

    var item2 = listWarenkorbMain.FindItemWithText("Artilel_1");

    if (item != null)
    {
    textBox1.Text = listWarenkorbMain.Item.Count.ToString();
    }
    if (item == null)
    {
    textBox1.Text = "0";
    }

  • #2
    Wenn du das Ergebnis von FindItemWithText der Variable item2 zuordnest, würde ich die auch auswerten und nicht item.

    Das if-Konstrukt ist falsch. Die erneute Abfrage auf ==null ist unnötig
    if (item2 != null)
    {
    textBox1.Text = listWarenkorbMain.Item2.Count.ToString();
    }
    else
    {
    textBox1.Text = "0";
    }

    besser noch

    textBox1.Text = "0";
    if (item2 != null)
    {
    textBox1.Text = listWarenkorbMain.Item2.Count.ToString();
    }
    Zuletzt editiert von Christian Marquardt; 06.03.2019, 09:47.
    Christian

    Comment


    • #3
      Hallo Christian,

      ich habe das vergessen anzupassen, es sind mehrere Abfragen. Natürlich bezieht sich die Variable item1, 2, 3 etc. auch auf die listWarenkorbMain.Item1, 2, 3 etc.

      die Korrektur sieht so aus, doch wie gesagt, das zählt alle Einträge in der ListView. Was kann ich anpassen, damit nur der Text-Eintrag "Artilel_1" gezählt wird?



      var item = listWarenkorbMain.FindItemWithText("Artilel_1");

      if (item != null)
      {
      textBox1.Text = listWarenkorbMain.Item.Count.ToString();
      }
      else
      {
      textBox1.Text = "0";
      }

      Vielen Dank.

      Comment


      • #4
        FindItemWithText zählt alle ListViewItems die mit diesem Text beginnen. Ev. beginnen alle deine Items mit "Artilel_1"
        Christian

        Comment


        • #5
          Nein, die Namen sind alle unterschiedlich. Mineralwasser, Wein, Bier etc. gesucht wird z.B. nach Wein "Artikel_1" ist nur ein Beispiel. Wenn kein Wein im Warenkorb vorhanden ist, wird nichts gezählt, das ist schon mal korrekt, ist nur Wein drinn, wird richtig gezählt. ist aber Wein und Mineralwasser im Warenkorb, werden alle Einträge gezählt anstatt nur der Wein.

          Comment


          • #6
            Dann musst du mal debuggen oder hier mehr Code zeigen
            Christian

            Comment


            • #7
              Für diese einfache Aufgabe gibt es nicht mehr Code. Die Zählung die in der TextBox steht wird in einem zweiten Schritt in die Datenbank geschrieben. Das funktioniert alles. Es geht nur um die korrekte Zählung an sich, und die reduziert sich lediglich auf das.

              private void btn1_Click(object sender, EventArgs e)
              {

              var item = listWarenkorbMain.FindItemWithText("Irgend ein Text");

              if (item != null)
              {
              textBox1.Text = listWarenkorbMain.Item.Count.ToString();
              }

              }

              Comment


              • #8
                Solange du hier nicht den Originalcode zeigst (ohne irgendwelche Übertragungsfehler), wird dir keiner helfen können
                bim debuggen wirst du das ja erkennen können
                Zuletzt editiert von Christian Marquardt; 06.03.2019, 13:04.
                Christian

                Comment

                Working...
                X