Sum ListView特定列

时间:2016-06-01 04:45:49

标签: c# listview

我正在寻找这种情况的解决方案,我得到了一个列表视图,我必须展示一个简单的收银员。

Appearence

我怀疑为什么我可以在我的列表视图中显示所有项目的总和 textBoxTotal

codProduto = int.Parse(txtCodProd.Text);
nomePRod = txtNomeProd.Text;
quantidade = int.Parse(txtQuantidade.Text);
valorUnitario = nvo.procurarPreco(int.Parse(txtCodProd.Text));
valorTotal = quantidade * valorUnitario;

valorAcumulado += valorTotal;

  0   1      2             3             4      <<number columns
//ID NOME QUANTIDADE VALOR_UNITARIO VALOR_TOTAL

ListViewItem itens = new ListViewItem(codProduto.ToString());
itens.SubItems.Add(nomePRod.ToString());
itens.SubItems.Add(quantidade.ToString());
itens.SubItems.Add(valorUnitario.ToString());
itens.SubItems.Add(valorTotal.ToString());

listView.Items.Add(itens);

当我尝试使用我需要的值创建循环来捕获colum时,我失败了。

类似的东西:

for (int i = 0; i < listView.Items.Count; i++)
//{
//    valorAcumulado += decimal.Parse(listView.items[i].SubItems[4].Text);
//}

我只需要4列总和并显示它......即使添加了新项目。

3 个答案:

答案 0 :(得分:0)

double valorSum = 0;

foreach (ListViewItem lstItem in listView.Items) // listView has ListViewItem objects
{
   valorSum += double.Parse(lstItem.SubItems[4].Text); // Columns 4
}

答案 1 :(得分:0)

我认为使用GridViewListView更适合您的情况。

你写的循环只有一个拼写错误,Items而不是items ListView

decimal valorAcumulado = 0;
for (int i = 0; i < listView.Items.Count; i++)
{
    valorAcumulado += decimal.Parse(listView.Items[i].SubItems[4].Text);
}
Console.WriteLine(valorAcumulado); // 83

答案 2 :(得分:0)

您的物品看起来不太好。尝试重新组织它,以便更容易遵循和维护。

using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            List<CartItem> cartItems = new List<CartItem>();
            cartItems.Add(new CartItem
            {
                ItemNumber = "1234",
                Description = "Small widget",
                Quantity = 2,
                Price = 1.50,         
            });

            cartItems.Add(new CartItem
            {
                ItemNumber = "6789",
                Description = "Large widget",
                Quantity = 1,
                Price = 10.00,
            });

            double total = 0;
            foreach(CartItem item in cartItems)
            {
                total += item.ExtendedPrice;
            }

            MessageBox.Show("Your total is $" + total.ToString());

        }
    }

    public class CartItem
    {
        public CartItem(){}

        public string ItemNumber { get; set; }
        public string Description { get; set; }
        public int Quantity { get; set; }
        public double Price { get; set; }
        public double ExtendedPrice { get { return Price * Quantity; } }
    }   
}