我正在开发发票应用。 Product表与InvoiceLineItems表链接,以便用户使用 可以从组合框的下拉列表中选择产品,其中列出了所有可用的产品。 我想要另一种选择产品的解决方案 现在我想从另一种形式中选择产品,当用户输入产品列时显示。 该表格具有搜索功能,可通过名称或产品代码快速查找产品。 选择产品后,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中的combobox中选择产品,product_id保存在所选产品的数据库中,并且工作正常。但正如我之前所说,我想搜索 并选择单独形式的产品,并将此选择反映在组合框中。 原因是因为我在数据库中有3000个产品,其中很多都有相似的名称,有时需要时间才能在组合框中找到产品...... 也欢迎替代解决方案。
答案 0 :(得分:0)
如果我对你说得不对,你可以尝试下一个解决方案:
在“查找”表单中,创建能够返回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;
}