2013-03-21 4 views
2

У меня есть код на C#. У меня есть список, тогда я хочу получить значение подэлемента, в частности, подэлемент Subtotal, который содержит промежуточную цену заказов. Я хочу суммировать значения и отображение, чтобы привести к текстовому полю в той же форме. Как я могу это сделать? Вот мой код:получить значение подпрограммы 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

вы можете извлечь Item значение или его SubItems в ListView так:

предположим, что ваш 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; } 
} 

При построении ListView вы создаете этот класс заполнить свойства и добавить объект класса ТЕГА 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 
Смежные вопросы