jleonorlane Ответов: 2

Как суммировать элементы столбца в listView в VB.NET


всем привет........

Может ли кто-нибудь помочь в том, как суммировать конкретный столбец listview
и передайте его значение в текстовое поле в VB.NET?

Надеюсь, кто-нибудь сможет мне помочь....
Любая помощь будет оценена по достоинству...

пожалуйста ... помогите....: вздох:

2 Ответов

Рейтинг:
2

William Winner

Лучшее решение...и более чистое-это:

Dim dblTotal as Double = 0
Dim dblTemp as Double

For Each lvItem As ListViewItem In ListView1.Items
   If Double.TryParse(lvItem.SubItems(2).Text, dblTemp) Then
       dblTotal += dblTemp
   End If
Next

TextBox1.Text = dblTotal


Но вы должны знать, что первый столбец также является подпунктом, поэтому приведенный выше код суммирует значения в столбце 3. Я также добавил метод TryParse, потому что вам нужно проверить и убедиться, что в этом столбце действительно есть двойники. (Конечно, если он привязан к базе данных, а столбец является двойным столбцом, то вам это не понадобится.


Dalek Dave

Хорошо, ваш код более аккуратный!
Впрочем, я был не так уж далеко, учитывая, что бежал с макушки.

Стоит поднять голос за элегантность, которой не хватало моему коду .

Member 13439014

сэр, в решении 1, куда мне поместить этот код ?

Рейтинг:
1

Dalek Dave

Простой способ состоит в том, чтобы перебрать все строки и получить таким образом общую сумму.

Затем передайте итог в текстовое поле.

Dim Li as ListViewItem
Dim dblTotal As Double

For Each Li In ListView1.Items
 If ListView1.Items.Count = 0 Then
  dblTotal = 0
  
  Else
dblTotal = dblTotal + CCur(Li.SubItems(4))

 End If
Next



Я думаю, что должно работать (очевидно, редактировать для ваших нужд!)

Пометьте, если это полезно.


Johnny J.

Я думаю, что ты списываешь все со своей головы, Дэйв. Разве не должно быть:

Дим ли, как элемент listviewitem
Тусклый dblTotal как двойной

Для Каждого Li В ListView1.Предметы
Если Мыши Listview1.Предметы.Количество = 0 Тогда
dblTotal = 0, иначе dblTotal = dblTotal + возникнуть(литий.Подпунктах(4)) Если В Следующий Раз ???

Dalek Dave

Виновен по всем пунктам обвинения.

Я просто записал это, так сказать, "на копыте".

William Winner

При объявлении новой двойной, он всегда начинается с 0? Я знаю, что (в свое время), когда я изучал C++, нам говорили, что мы всегда должны инициализировать наши ints и double, а что нет, потому что объявление нового double просто назначает ему место в памяти, и это место может иметь в нем любое значение. Но разве это изменение с C#?

Если нет, то что произойдет в случае отсутствия элементов с вашим кодом?

Код внутри для каждого Li в ListView1.Элементы на самом деле никогда не будут работать, а это будет означать, что dbltotal никогда не изменит свое значение. вы никогда не должны на самом деле добраться до строки dblTotal = 0, потому что вы никогда не будете вводить для каждого блока, если нет элементов. Не будет ли лучшим вариантом:

Dim dblTotal as Double = 0

Для каждого Li в ListView1.Предметы
dblTotal += CCur (Li. SubItems(4))
Следующий

Если уж на то пошло, зачем вам использовать CCur для преобразования элемента в двойник? Это должно сделать еще одно преобразование, чтобы преобразовать этот тип валюты в двойную.

Dalek Dave

Уильям, посмотрев на него еще раз, я вижу, что вы, вероятно, правы, но, как я уже сказал, я просто ударил его, не проверяя слишком глубоко.

Я думаю, что мой код будет работать (с несколькими хитростями), но согласитесь, что он немного неуклюж.

Кроме того, CCur появился в силу привычки! В конце концов, я бухгалтер, и мне приходится вкладывать это в большинство своих дел! :)