WinForms Datagridview -查找“表单”
本文关键字:表单 查找 Datagridview WinForms | 更新日期: 2023-09-27 18:11:59
我正在开发发票应用程序。产品表与invoiceineitems表链接,以便用户可以从组合框的下拉列表中选择产品,其中列出了所有可用产品。我想要另一种选择产品的方法现在我想从另一个表单中选择产品,当用户输入产品列时显示。该表单具有按名称或产品代码快速查找产品的搜索功能。选择产品后,datagridview中的查找列应该在列表中选择该产品,当然DisplayMember-ValueMember是在查找列之前设置的。这可能吗?怎么做?代码:
_products = this._productService.GetAllProducts();//returns List<ProductModel>
...
DataGridViewComboBoxColumn products = new DataGridViewComboBoxColumn();
products.ValueMember = "ID";
products.DisplayMember = "Name";
dgvLineItems.Columns.Add(products);
products.DataSource = _products;
…这段代码允许我从datagridview中的组合框中选择产品,product_id保存在选定产品的数据库中,并且工作良好。但是就像我之前说的,我想要搜索并选择单独形式的产品,该选择反映在组合框中。这样做的原因是我的数据库中有3000个产品,其中许多都有相似的名称,有时在组合框中查找产品需要花费时间……
如果我理解对了,你可以尝试下一个解决方案:
在"Lookup"表单中,创建能够返回productId的公共方法。该方法将调用该表单的ShowDialog方法,并最终返回到主表单选中的项。最后,在组合框中设置所选值:
搜索表单:
int selectedProductId = -1;
public int Display()
{
this.ShowDialog();
return selectedProductId;
}
主要形式:
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
int selectedProduct;
if (e.ColumnIndex == productColumn)//Check that user entered relevant column
{
selectedProduct = searchForm.Display();
}
//Set value
products.SelectedValue = selectedProduct;
}