2014-07-09 39 views
-4

我正在開發發票應用程序。產品表與InvoiceLineItems錶鏈接,以便用戶 可以從列出所有可用產品的組合框的下拉列表中選擇產品。 我想要另一種選擇產品的解決方案 現在我想從另一種形式選擇產品,當用戶輸入產品欄時顯示哪個產品。 該表單具有通過名稱或產品代碼快速查找產品的搜索功能。 選擇產品後,datagridview中的查找列應該在列表中選擇該產品, 當然DisplayMember-ValueMember之前設置爲查找列。 這是可能的和如何做到這一點? 代碼:WinForms Datagridview - 查找「表格」

_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個產品,其中許多都有類似的名稱,有時需要時間才能在組合框中查找產品... 替代解決方案也是受歡迎的。

+0

請清理你的問題。包括任何相關的代碼,顯示目前爲止你所擁有的。另外,你指的是一個圖像...什麼圖像? –

+0

對不起,我是新用戶,所以我沒有足夠的積分上傳圖片。 – user3816560

+0

沒關係,只需包含一個圖片鏈接,然後有人會照顧您的照片。 –

回答

0

如果我已經understended你的權利,你可以嘗試下一個解決方案:

在你的「查找」的形式,創造公共的方法,將能夠返回的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; 

    }