3
我的問題如下:我有兩個ListBoxe
s。首先,我存儲可訂購的產品,其次是客戶的購物車。因此,產品具有數量屬性,並且我有NumericUpDown
,客戶可以在其中更改訂購產品的數量。將列表框中的對象添加到另一個
private void button2_Click(object sender, EventArgs e) //puts selectedproduct to the cart
{
if (listBox1.SelectedItem == null || (int)numericUpDown1.Value == 0 ||
(listBox1.SelectedItem as Product).Quantity < (int)numericUpDown1.Value) return;
foreach (Product item in listBox2.Items)
{
if (item.ID == (listBox1.SelectedItem as Product).ID)
{
return;
}
}
listBox2.Items.Add(new Product { Name = (listBox1.SelectedItem as Product).Name,
Price = (listBox1.SelectedItem as Product).Price,
Quantity = (int)numericUpDown1.Value});
(listBox1.SelectedItem as Product).Quantity -= (int)numericUpDown1.Value;
}
這很好,除了它將一個新項目添加到我的產品表。我想要做的事情是向顧客購物車添加選定數量的選定產品,而不是將新項目添加到產品表格中,並使用numericupdown1.value減少訂購產品數量。我使用EF代碼第一個數據庫,看起來像:
public class Order
{
public int ID { get; set; }
public bool Status { get; set; }
public virtual Account account { get; set; }
public virtual List<Product> products { get; set; }
}
public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public long Price { get; set; }
public int Quantity { get; set; }
public virtual List<Order> orders { get; set; }
}
這裏是保存方法:
private void button1_Click(object sender, EventArgs e)
{
List<Product> p = new List<Product>();
foreach (Product item in listBox2.Items)
{
p.Add(item);
}
Variables.Db.orders.Add(new Order { account = Variables.Currentuser, products = p });
Variables.Db.SaveChanges(); //Variables.Db is my CodeFirst Database
}
我試過很多方法,例如:
int q = (listBox1.SelectedItem as Product).Quantity;
(listBox1.SelectedItem as Product).Quantity = (int)numericUpDown1.Value;
listBox2.Items.Add(listBox1.SelectedItem);
(listBox1.SelectedItem as Product).Quantity = q - (int)numericUpDown1.Value;
但最後一行將listbox2對象的數量改回爲與listbox1s相同。