我有两种形式。 ShoppingBasketForm.cs
和EditBasketPopup.cs
。
ShoppingBasketForm.cs
在名为DataGridView
的{{1}}中显示一个购物篮,该购物篮与来自dataGridBasket
课程的单独List<OrderItem>OrderItems
绑定。这可以通过填写页面OrderItem
Product Name
和Quantity
上提供的文本框/ numericUpDowns,然后点击LatestPrice
按钮Add
来添加。它还可以通过点击btnAdd
按钮Remove
从所选行中删除数据。
我现在正在尝试实现btnRemove
按钮Edit
,一旦点击,它就会实例化btnEdit
表单。在此表单上,再次显示三个文本框/数字向上EditBasketPopup
ProductName
和Quantity
。
如何从LatestPrice
上的所选行中获取数据(用户无法选择单个单元格),并在用户激活dataGridBasket
点击事件时使用该数据填充三个文本框?< / p>
我尝试在btnEdit
中创建一个属性来保存第一个表单中的数据,但不确定如何从字符串形式的EditBasketPopup.cs
中的所选行中提取数据,并且还遇到了需要来自行中每个单元格的单个数据的问题,因为它们被绑定到不同的属性。
我显然没有太多关于这个问题的示例代码,因为它是关于如何而不是为什么的理论,但是如果您需要什么,请告诉我。< / p>
答案 0 :(得分:1)
@Harry Sweetman首先要获得datagridview的选定元素,你可以这样做:
'.blog-content'
此外,您需要在 //recover the view row
DataGridViewRow drv = (DataGridViewRow)dataGridBasket.Current;
//if the row is not empty => basket was selected in the dataGridView
if (drv.Cells[0].Value != null)
{
//Here we get the first cell selected let say the name is like the id:
string idBasketToEdit = drv.Cells[0].Value.ToString().Clone().ToString();
//Now we instantiate the form EditBasketPopoup, but sending the selected basket as a parameter
frmEdit = new EditBasketPopoup(idBasketToEdit);
frmEdicion.Name = "Edit basket";
frmEdicion.ShowDialog();
}
中使用带有Basket参数的表单构造函数:
EditBasketPopup.cs
最后让我们假设你有一个控制器(例如BasketController)你有一些逻辑。在这里,您认为您在要绑定数据网格视图(dataGridBasket)的集合中搜索要编辑的购物篮。
public EditBasketPopup(string idBasket)
{
InitializeComponent();
Basket b = control.GetBasket(idBasket);
//You set the form boxes:
txtProductName.Text = b.ProductName;
txtLatestPrice.Text = b.LatestPrice;
txtQuantity.Text = b.Quantity;
}