我有一个包含添加,编辑和保存按钮的表单。该表单还有一个datagridview。
我这样做是为了更新现有的产品实体并添加新的产品实体,然后在datagridview中显示更改的数据。
当我点击编辑按钮时,将显示保存按钮,并执行我在保存按钮中写入的语句。
新产品实体添加得很好。
我的问题是,当我点击编辑按钮时,会向datagridview添加一行,而不是更新同一行。
在添加到实体框架中的表之前,有没有办法检查表中的可用产品是否正在更新或添加新产品?
private void btnSave_Click(object sender, EventArgs e)
{
pictureBox1.Enabled = true;
pictureBox1.Visible = true;
Image image = pictureBox1.Image;
byte[] bit = null;
bit = imageToByteArray(image);
product1 pd = new product1();
string category = tbCategoryName.Text;
string categorydesc = tbCategoryDescription.Text;
var c = new category { category_Name = category, category_Description = categorydesc };
pd.product_Name = tbProductName.Text;
decimal price = Convert.ToDecimal(tbProductPrice.Text);
pd.product_Price = price;
pd.product_Description = tbProductdescription.Text;
pd.product_Image = bit;
pd.category = c;
tsgentity.SaveChanges();
EquipmentFinder equipment = new EquipmentFinder();
equipment.productgridview.Refresh();
this.Close();
equipment.ShowDialog(this);
}
答案 0 :(得分:1)
这只是一个例子。您需要做的是使用linq从正在编辑/保存的集合中提取当前对象,然后对检索到的对象进行更改,然后更新即。
public bool UpdateCustomer(Customer customer){
Customer cust = entities.Customers.FirstOrDefault(c => c.ID == customer.ID);
cust.Forname = customer.Forename;
cust.Surname = customer.Surname
entities.SaveChanges();
}
答案 1 :(得分:0)
您是否检查过这些按钮的事件处理程序?它们是否连接到正确的按钮?听起来你的编辑按钮正在为新产品触发事件处理程序,听起来像添加按钮正在触发用于编辑产品的事件处理程序。我肯定会先检查一下,而不是寻找解决方法或黑客来容忍它。