我在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 :(得分: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的Tag中
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);
答案 1 :(得分:1)
您可以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
传递的索引。你应该传递你想要总结的子项目索引
答案 2 :(得分:0)
您的代码已经正确地将项目添加到Listview中,假设您想要在sayIntectionIndexChanged事件中检索列'total'的值,您可以这样做 -
ListView.Items[SelectedItemIndex].SubItem[2].Text