2011-05-01 127 views
3

我正在製作一個軟件,用戶將使用datagridview創建發票。 我有一些文本框單元格和一些組合框單元格。 有一些事情我想做的事:DataGridView Winforms填充ComboBoxCell

  1. 我想填補數據庫表中的組合框細胞 。我嘗試這樣做:

    DataTable tblItems = UtilityClass.GetDataTable("SELECT ItemName,ItemID FROM Items"); DataGridViewComboBoxColumn itemCol=DataGridViewComboBoxColumn)dataGridViewNewBill.Columns["ColItem"]; itemCol.DataSource = tblItems; itemCol.DisplayMember = "ItemName"; itemCol.ValueMember = "ItemID";

    但是,選擇了一個項目之後,和 當焦點被移動到 不同的細胞,在 選擇的項目的組合框(或文本框的文本) 細胞消失。
    編輯:它如果 導致所有組合框細胞得到 是價值,因爲它們具有相同的 數據源組合框中選擇一個項目似乎 !但即使它是 的情況下,爲什麼在焦點 移動到不同的單元格後,爲什麼combox/textbox 單元失去了它的值。

+1

問*只*問題。 – 2011-05-01 18:57:12

+0

由多個問題變爲單個問題。 – 2011-05-02 02:54:02

+0

只是一個建議:如果你有時間並且仍然處於項目的開始階段:WPF和Entity Framework 4會爲你節省很多麻煩。我不後悔自己去看。 – LueTm 2011-05-02 04:30:43

回答

1

好了,我現在敢肯定,當我們使用相同的數據源,2個或更多組合框,將值改爲1會導致其他人也改變。

我所做的是禁止添加新行和

  1. 在形式負載添加一行, 設置, 特定組合框的細胞(不是 列)的數據源。
  2. 當用戶移動到最後一個單元格 並按回車鍵時,我創建了 另一行,並執行與上面的 相同的操作。

以這種方式,每個單元格都有不同的數據源,儘管我必須做更多的工作,但它的工作。

1

您是否在處理任何正在清除數據的特定事件。

選擇一個值導致它被選擇用於其他小區因爲網格使用公共組合框橫跨組合框柱,其是用於使列的值的選擇使用編輯所有細胞。

您可以通過處理EditingControlShowing事件控制behviour

嘗試設置此模式

dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;