我似乎在将弹出窗体上放置的编辑按钮上的更新信息返回给我的DataGridView
(这是绑定到原始表单上的对象列表)。从弹出窗体更新绑定到DataGridView的对象列表
但是,我似乎有一天在工作,但是,我今天又回来工作,它似乎没有功能,我不知道这是否是因为有缺陷我的逻辑,或者意外被删除了。
我有两种形式。 Shopping Form.cs
和Popup.cs
。
Shopping Form.cs
显示在DataGridView
一个购物篮叫dataGridBasket
这势必它来自我的OrderItem
类单独List<OrderItem>OrderItems
。可以通过在页面ProductName
Quantity
和LatestPrice
中填写提供的文本框/ numericUpDowns,然后单击添加按钮btnAdd
来添加此项。它还能够通过单击删除按钮btnRemove
从选定行中删除数据。
下面是从Shopping Form.cs
#region Edit button
private void btnEdit_Click(object sender, EventArgs e)
{
DataGridViewRow row = dataGridBasket.CurrentRow;
OrderItem oi = myBasket.OrderItems[dataGridBasket.SelectedRows[0].Index];
if (!row.IsNewRow)
{
DialogResult dialogresult;
Popup form = new Popup(row);
dialogresult = form.ShowDialog();
if (dialogresult == System.Windows.Forms.DialogResult.OK)
{
oi.ProductName = form.ProdName;
oi.Quantity = Convert.ToInt32(form.QuantityE);
oi.LatestPrice = form.LatPrice;
}
else if (dialogresult == System.Windows.Forms.DialogResult.Cancel)
{
form.Close();
}
form.Dispose();
}
}
代码这里是Popup.cs
{
public partial class Popup : Form
{
public Popup(DataGridViewRow rowToEdit)
{
InitializeComponent();
txtEditProdName.Text = rowToEdit.Cells[0].Value.ToString();
string quantityToEdit = rowToEdit.Cells[1].Value.ToString();
decimal iQuantityToEdit = Convert.ToDecimal(quantityToEdit);
upDownEditQuantity.Value = iQuantityToEdit;
string latestPriceToEdit = rowToEdit.Cells[2].Value.ToString();
txtEditLatPrice.Text = latestPriceToEdit;
}
public string ProdName { get { return txtEditProdName.Text; } }
public decimal QuantityE { get { return upDownEditQuantity.Value; } }
public decimal LatPrice { get { return Convert.ToDecimal(txtEditLatPrice.Text); } }
}
}
弹出的作品就好了和字段填入从选定行的信息,但是,当用户更新信息并按OK时,原始表格上的数据不会改变。
任何指针?
在此先感谢。
如果数据绑定项目不包含通知属性更改事件,用户界面(datagridview)将不知道任何已更改。您必须手动触发刷新。无论是整个网格或源或类似'dataGridBasket.InvalidateRow(SelectedRow.Index)' –
@ Me.Name啊是的!傻我!我必须删除重新绑定,我刚刚添加在'dataGridBasket.DataSource = null;'然后'dataGridBasket.DataSource = myBasket.OrderItems;'并且它再次工作。感谢您的评论,将其添加为答案,以便我可以接受它! :) –
Okidoki,复制粘贴评论;)很高兴它是有用的。 –