2013-03-21 27 views
2

我在C#中有一個代碼。我有一個列表視圖,那麼我想要的是獲取子項目的值,特別是包含訂單小計價格的小計子項目。我想總結這些值並將結果顯示在同一個表單中的文本框中。我怎樣才能做到這一點?這裏是我的代碼:得到一個listview子項的值

AddOrderForm add = new AddOrderForm(); 
     foreach (DataRow drow in dt.Rows) 
     { 
      add.nametb.Text = drow["Menu"].ToString(); 
      add.Pricetb.Text = drow["MenuPrice"].ToString(); 
      add.listBox1.Items.Add(drow["MenuDesc"].ToString()); 
      add.orderqtytb.Focus(); 
      add.ShowDialog();     
     } 
     if (add.isAddOrder) 
     { 

      ListViewItem item = new ListViewItem(); 
      item.Text = add.nametb.Text; 
      item.SubItems.Add(add.orderqtytb.Text); 
      item.SubItems.Add(add.Pricetb.Text);    

      double total = 0; 
      try 
      { 
       total = double.Parse(add.Pricetb.Text) * double.Parse(add.orderqtytb.Text); 
      } 
      catch 
      { 
       total = 0; 
      } 
      item.SubItems.Add(total.ToString("0.00")); 
      Listview.Items.Add(item); 

回答

0

您可以檢索在ListViewItem值或其SubItems這樣:

假設你的ListView是這樣的:

public void AddDataToLvw(){ 
      ListViewItem item1 = new ListViewItem("item1", 0); 
      item1.SubItems.Add("1"); 
      item1.SubItems.Add("3"); 

      ListViewItem item2 = new ListViewItem("item2", 1); 
      item2.SubItems.Add("4"); 
      item2.SubItems.Add("6"); 

      ListViewItem item3 = new ListViewItem("item3", 0); 
      item3.SubItems.Add("7"); 
      item3.SubItems.Add("9"); 

      // Create columns for the items and subitems. 
      listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left); 
      listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left); 
      listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left); 

      listView1.Items.AddRange(new ListViewItem[] { item1, item2, item3 }); 

} 

那麼你就可以訪問它的子項是這樣的:

private void GetSubItems() 
    { 
     int total = 0; 
     foreach (ListViewItem item in listView1.Items) 
     { 
      total += Convert.ToInt32(item.SubItems[1].Text); 

     } 
     MessageBox.Show(total.ToString()); 
    } 

請注意我在item.SubItems中通過的索引。你會傳遞分項指數,要sumup

1

我寧願構造一類這樣的

class MyClass 
{ 
    public string PropertyA { get; set; } 
    public string PropertyB { get; set; } 
    public string PropertyC { get; set; } 
    public string PropertyD { get; set; } 
} 

在構建列表視圖你生成這個類填充屬性和類的對象添加到的標籤ListViewItem的

MyClass myClass = new MyClass(); 
myClass.PropertyA = "A"; 
myClass.PropertyB = "B"; 
myClass.PropertyC = "C"; 
myClass.PropertyD = "D"; 

ListViewItem item = new ListViewItem(); 
item.Text = myClass.PropertyA; 
item.SubItems.Add(myClass.PropertyB); 
item.SubItems.Add(myClass.PropertyC); 
item.Tag = myClass; 

現在你可以從標籤取對象,你有你的價值觀

MyClass myClassForLaterUse = (MyClass)item.Tag; 
MessageBox.Show(myClassForLaterUse.PropertyA); 
0

你的代碼已經添加項目到ListView正確的,假設你想在說SelectedIndexChanged事件檢索列的「合計」的價值,你可以做 -

ListView.Items[SelectedItemIndex].SubItem[2].Text