2016-06-01 55 views
2

我正在尋找這種情況下的解決方案,我有一個listview,我必須顯示一個簡單的收銀員。總結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); 

在我的列表視圖中的所有項目的總和,當我試圖創建一個循環趕上科拉姆與我需要的價值,我失敗了。

類似的東西:

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

我只需要4列總和,並顯示它...即使添加新項目。

+0

你得到什麼錯誤? sum = 0還是異常? – Sami

+0

請看這[Link](http://stackoverflow.com/questions/17004522/c-sharp-how-to-show-the-total-of-values-in-a-column-in-a-listview) 。 –

回答

0

我認爲使用GridViewListView更適合您的情況。

你寫的循環只是有一個錯字,這是ItemsListViewitems

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 
0
double valorSum = 0; 

foreach (ListViewItem lstItem in listView.Items) // listView has ListViewItem objects 
{ 
    valorSum += double.Parse(lstItem.SubItems[4].Text); // Columns 4 
} 
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; } } 
    } 
}