2013-06-19 55 views
0

是否可以將combobox中的值插入數據庫中的特定列?將Combobox項插入數據庫列

例如,如果我有combobox與項目:物品1ITEM2項目3,我想他們bind一些columnCOLUMN1,我想管理是這樣的:如果物品1被選中,當我點擊button,我要插入的列1 項目的價值,否則,如果選擇的項目是ITEM2然後我想的ITEM2值是插入編輯於第1列等...

現在我知道這個問題並沒有寫得很好,但我只是想知道這是否可行。

我一直在谷歌這種類型的問題,但我找不到解決方案。我知道如何將column記錄插入到combobox項目列表中,但不知道如何做相反的操作。

也想說我在我的WPF/WCF/MVVM應用程序中有這個問題,所以我想知道這是可能的(以及如何)解決這個問題。

+0

只是澄清你的問題,你必須在表格上兩個控件,一個是組合框和其他的按鈕。您想要將選定的值保存在數據庫表的col1字段中。我的理解是正確的嗎? –

+0

是的。讓我更具體一點:想象一下,我有人名的組合框:喬治,詹姆斯,邁克爾。並有一個按鈕插入,並在數據庫中的某些表具有列「名稱」是空的。如果我在組合框列表中選擇「邁克爾」,按下按鈕插入,比我想要「邁克爾」被插入列「名稱」。 – Stojdza

回答

1

該解決方案基於MVVM模式。 將選定的組合框控件項目綁定到View模型中的某個屬性。 所以你的觀點應該像

<ComboBox ItemsSource="{Binding SomeItems,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True}" SelectedValue="{Binding SelectedItemBinding,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True}" /> 

    <Button Command={Binding ButtonClickCommand} ..../> 

所以一旦按鈕被點擊你會得到視圖模型的RelayCommand手柄,你可以有一個邏輯那裏得到所選擇的項目,並使用該值插入列。您的視圖模型應該是什麼樣子,

public class ViewModel : //implement notify property changed and ICommand 
    { 
     public RelayCommand ButtonClickCommand 
     { 
      get new RelayCommand(EventHandlerToBeCalled); 
     } 


     public string SelectedItemBinding 
     { 
      get; 
      set 
      { 
        //notify property changed. 
      } 
     } 

     //method called when button is clicked. 
     private void EventHandlerToBeCalled() 
     { 
       //here set the SelectedItemBinding to a column. 
     } 
    } 
+0

它幫助thanx! – Stojdza

1

ofc you can。在按鈕單擊事件上,您可以獲取組合框的選定值並保存。

var selectedItem = ComboBoxName.SelectedItem; 

但是,如果你已經用對象綁定了組合框,那麼你可以投它。

var selectedItem = ComboBoxName.SelectedItem as (objecttypehere) 

更新 我錯過了你使用MVVM。然後在視圖中,您可以使用將組合框與選定項綁定。

<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding TheSelectedItem}"> 
    //Itemtemplates.  
</ComboBox> 

在視圖模型只是存取權限,你在我的測試案例「TheSelectedItem」屬性selectedItem屬性綁定屬性。

保存吧!

0
  1. 在組合框中,您可以存儲值與前綴(col1_12,col2_24等)
  2. 按鈕單擊您要分析價值:它的前綴和原始值分開
  3. 所以你可以寫入需要的列的值:

    switch(prefix){ case「col1」:table.column1 = value;打破; case「col2」:table.column2 = value;打破; //等 }