【发布时间】:2016-01-20 04:21:49
【问题描述】:
我希望能够从 wpf Datagrid 中的 ComboBox 中选择“true”或“false”(布尔值),并能够将该选择保存到我的数据库中。
我希望能够通过保存到我的数据库中的布尔变量作为位(1 = true; 0 = false)来指示该行是否处于“活动”状态。
这是我的创建表语句: Create Table Statement(AccountType)
我使用 ObservableCollection 填充数据网格,如下所示:
protected override void Get()
{
using (var dbContext = new IEMASEntitiesDataContext())
{
var accountType = from s in dbContext.AccountTypes select s;
var observable = new ObservableCollection<AccountType>(accountType);
Collection = observable;
}
}
我的 XAML 代码如下:
<DockPanel DataContext="{StaticResource ResourceKey=AccountTypeViewModel}" LastChildFill="True">
<ToolBar DockPanel.Dock="Top">
<Button Content="Display" Command="{Binding GetCommand}" Width="78"/>
<Button Content="Save" Command="{Binding SaveCommand}" Width="78"/>
</ToolBar>
<Grid>
<GroupBox x:Name="AccountTypeGroupBox">
<DataGrid x:Name="DataGridAccountType" ItemsSource="{Binding Collection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="AccountType" Width="150" Binding="{Binding Path=AccountTypeName, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridComboBoxColumn Header="Active" Width="100" SelectedValueBinding="{Binding StatusList, UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="AccountTypeId" DisplayMemberPath="Active"/>
<DataGridTemplateColumn Width="50" Header="Delete">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnDelete" Content="Delete" Command="{Binding DeleteCommand}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
</Grid>
</DockPanel>
它不起作用。组合框中没有显示任何内容,并且我不知道在显示时如何将所选项目保存到 SQL Server 数据库中。我会很感激一些帮助,请。我正在使用 LINQ TO SQL。我是新手:-(。
【问题讨论】:
-
您的 AccountType 是否在绑定属性上实现了 INotifyPropertyChanged? DataGrid ItemsSource 集合中是否有数据?
-
嗨。是的,我在我的 CommandBase 类中实现了 INotifyPropertyChanged。我确实有虚拟数据,它显示在所有其他列中,除了 ComboBox。我的 Commandbase 是一个接口类,我的所有 ViewModel 都在使用它。 Collection Itemsource 是一个 Observable 集合。
-
那里没有 Combo ItemsSource 绑定。你是在代码后面设置的吗?
-
我选择了ListView的路线。让我告诉你我的意思:我有一个 GridViewColumn.Cellplate。而它的DataTemplate 的子对象就是ComboBox。我希望它填充两个项目:True 和 False。我希望能够从这两个选项中进行选择:ItemSource 将绑定到数据库中表的 Active 列。请给我一个例子,说明你将如何做到这一点。我希望能够检索选择并保存它。我会根据需要修改代码,如果可以请演示一下。
标签: c# wpf mvvm combobox datagrid