2013-10-30 70 views
1

我一直在爲此奮鬥一段時間,它讓我瘋狂。這是的情況:綁定DataGridView與多個來源

我有一個界限DataGridView我設計這與視覺工作室設計師。所有信息都相應顯示。

在我的DataGridView我有2 ComboBoxes在這裏的數據也正確顯示。我希望如果我點擊ComboBoxe選項列表顯示。

因爲DataGridView是綁定到源,我不能使用ComboBox.Items.Add()方法。所以我在設計器中創建了另一個數據源,並且在運行時我更改了該特定組合框的datasource現在列表顯示了我想要的選項,是的!

現在,我想這個新添加或更改的行保存到數據庫..所以我用這個下面的方法(我稱之爲從DataGridViewRowLeave事件的方法):

 if (tasksDataSet.HasChanges() 
     { 
      try 
      { 
       tasksBindingSource.EndEdit(); 
       tasksDataSet.GetChanges(); 
       tasksTableAdapter.Update(tasksDataSet); 
      } 
      catch (Exception ex) 
      { 

      } 
     } 

這不適用於ComboBoxes,因爲這是另一個數據源。

所以basicly我想是:

  • 使用的DataGridView
  • 更改數據源/添加項目到DataGridViewComboBox
  • 保存更改爲(完整)DataGridView作出數據庫

我該如何做這項工作?

回答

1

如果你的問題是保存給網格視圖的當前數據。 比我建議嘗試使用會話。而將數據綁定到DataSource則將其分配給 會話[「SomeID」]。如果您更改綁定然後再次分配相同的會話。

下一步將會話轉換爲您想要保存的任何內容。

例如:

 //Datasource. 
     list<User> DataBoundSource = new list<User>(); 

     DataGrid.DataSource = DataBoundSource; 
     DataGrid.DatBind(); 
     //Assign to Session where you are binding this 
     //every time 
     Session["SameID"] = lsDataBoundSOurce; 

     //your code. 
     ... 
     ... 
     ... 

     //covert that session to Datasource you want to save. 

     list<User> saveData = (list<User>) Session["SameID"]; 

這是基本的想法,我得到了。我跳這將幫助你。 請給它如果它幫助你+1

+0

這將改變整個數據網格的數據源,保存問題是保存是我有另一個數據源爲組合框 – Chancho

+0

我不告訴你改變數據源。將數據源分配給會話,然後通過轉換將該會話保存。如果可能的話,請發佈一些代碼,以便我可以幫助你。感謝您的回覆。 –