2013-06-19 93 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;打破; //等 }