C# 将组合框项插入数据库列
是否可以将C# 将组合框项插入数据库列,c#,wpf,mvvm,combobox,C#,Wpf,Mvvm,Combobox,是否可以将组合框中的值插入数据库中的特定列 例如,如果我有带有项目的组合框,项目1,项目2,项目3,并且我想将它们绑定到某个列:列1,我想管理的是:如果选择了项目1,当我点击按钮时,我想在列1中插入该项目的值,否则如果所选项目是项目2,则我想在列1中插入项目2的值,以此类推 现在我知道这个问题写得不是很好,但我只是想知道这是否可行 我一直在用谷歌搜索这类问题,但找不到解决办法。我知道如何将列记录插入到组合框项目列表中,但不知道相反的方法 我还想说,我在WPF/WCF/MVVM应用程序中遇到了这个
组合框中的值插入数据库中的特定列
例如,如果我有带有项目的组合框
,项目1,项目2,项目3,并且我想将它们绑定到某个列
:列1,我想管理的是:如果选择了项目1,当我点击按钮时,我想在列1中插入该项目的值,否则如果所选项目是项目2,则我想在列1中插入项目2的值,以此类推
现在我知道这个问题写得不是很好,但我只是想知道这是否可行
我一直在用谷歌搜索这类问题,但找不到解决办法。我知道如何将列
记录插入到组合框
项目列表中,但不知道相反的方法
我还想说,我在WPF/WCF/MVVM应用程序中遇到了这个问题,所以我想知道这是否可能(以及如何)以这种方式解决它。ofc you can。在按钮单击事件中,您只需获取组合框的选定值并保存它
var selectedItem = ComboBoxName.SelectedItem;
但是,如果已将组合框与对象绑定,则可以将其强制转换
var selectedItem = ComboBoxName.SelectedItem as (objecttypehere)
更新
我错过了你使用MVVM的机会。然后在视图中,您可以使用将组合框与所选项目绑定
<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding TheSelectedItem}">
//Itemtemplates.
</ComboBox>
//项目模板。
在viewModel中,只访问您在我的测试用例“TheSelectedItem”属性中与selecteditem绑定的属性
省省吧 此解决方案基于MVVM模式。
将组合框控件的选定项绑定到视图模型中的某个属性。
所以你的观点应该是这样的
<ComboBox ItemsSource="{Binding SomeItems,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True}" SelectedValue="{Binding SelectedItemBinding,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True}" />
<Button Command={Binding ButtonClickCommand} ..../>
在combobox中,您可以存储带有前缀的值(col1_12、col2_24等)
单击按钮时,您应该解析值:将其在前缀和原始值上分开
因此,您可以将值写入所需列:
开关(前缀){
案例“col1”:table.column1=值;中断;
案例“col2”:table.column2=值;中断;
//等
}
为了澄清您的问题,表单上有两个控件,一个是combobox,另一个是button。您希望将combobox中的选定值保存到数据库表的col1字段中。我的理解正确吗???是的,没错。让我更具体一点:想象一下,我有一个组合框,上面有人的名字:乔治、詹姆斯、迈克尔。并且有一个按钮插入,数据库中的一些表的“name”列为空。如果我在组合框列表中选择“Michael”,请按“插入”按钮,然后我希望在“名称”列中插入“Michael”。
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.
}
}