2014-02-18 72 views
0

我正在Visual Studio 2010中開發一個簡單的Windows Forms桌面應用程序。它連接到兩表數據庫,顯示值。用戶更改表格中的一些值,並且應該保存它們。我有兩個表格:BanksOrdersOrdersBanks(它有一個bank_id字段)有外鍵關係。
我創建了一個Form,我創建了一個Dataset,並通過拖放VS2010的Server Explorer面板中的兩個表來添加數據。
然後,我通過將Orders拖放到Form上,將DataGridView添加到我的Form中。
這是一個工作項目,我可以改變數據,保存它,並將其保存在數據庫中。DataGridView ComboboxCell不會將其值保存到數據庫中

唯一令人擔心的是,將銀行ID代替他們的名字放在表格中是不方便的。我希望在我的表中有一個ComboBoxCell

我用我的Form上的DataGridView刪除了一列bank_id的可視化編輯器。相反,我下面的代碼添加到Form構造:

public Form6() 
     { 
      InitializeComponent(); 

      DataGridViewComboBoxColumn colFilterType = new DataGridViewComboBoxColumn(); 
      colFilterType.HeaderText = "Bank"; 
      colFilterType.DataSource = dataSet1.banks; 
      colFilterType.ValueMember = "id"; 
      colFilterType.DisplayMember = "display_name"; 
      colFilterType.ValueType = typeof(int); 
      ordersDataGridView.Columns.Add(colFilterType); 

     } 

點評:表Banks有場iddisplay_name

它工作正常,爲ComboBoxCell,但它有2個問題:
1.當啓動形式,在該列(僅在列),所有值都是空的(而不是從數據庫中把他們)。
2.當我更改某個日期(例如添加一行)時,除Bank列中的值之外的所有值均成功保存到數據庫。但Bank列中的值不會保存。

我認爲Bank列與我的數據(Dataset或類似的東西)的綁定有些問題。
有人能幫我解決這個問題嗎?我應該如何將Bank列中的所有數據保存到數據庫?

+0

您可以隱藏bank_id列而不是刪除它。您可以將列的可見屬性設置爲false。 – suds

回答

1

要填充初始值,請將屬性DataPropertyName設置爲DB列名稱。

colFilterType.DataPropertyName = "id"

這也應該解決您的更新問題。

+0

謝謝!它解決了我的問題。 – user1460819

相關問題