【发布时间】:2018-07-25 07:56:43
【问题描述】:
我有这个“餐厅账单”的任务需要 DataGrid。
如果客户添加了相同的商品,而不是添加重复的行,我需要将 Quantity 列更新 1。
在上图中,当我再次点击Seafood Alfredo时,数量变为2,但又增加了一行Seafood Alfredo。我该如何防止这种情况发生?
将项目添加到数据网格的代码
private void cbbxMainCourse_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Populate DataGrid with item selected from combobox
MainCourse selectedMainCourse = (MainCourse)cbbxMainCourse.SelectedItem;
//DataGrid dgDishes add that item
dgDishes.Items.Add(selectedMainCourse);
selectedMainCourse.Quantity = 0;
//Iterate through dgDishes and increase Quantity by 1 for duplicate item
foreach (var item in dgDishes.Items)
{
if (item == selectedMainCourse)
{
selectedMainCourse.Quantity ++;
}
}
}
编辑 1:
对于数据网格
<DataGrid ItemsSource="{Binding}" Width="400" Height="200" Margin="58.5, 100, 58.5, 0" x:Name="dgDishes" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Category" Binding="{Binding Category}"/>
<DataGridTextColumn Header="Price" Binding="{Binding Price}"/>
<DataGridTextColumn Header="Quantity" Binding="{Binding Quantity}"/>
</DataGrid.Columns>
</DataGrid>
主菜
public class MainCourse : INotifyPropertyChanged
//: INotifyPropertyChanged
{
public string Name { get; set; }
public string Category { get; set; }
public double Price { get; set; }
//public int Quantity { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private int _quantity;
public int Quantity
{
get { return _quantity; }
set
{
_quantity = value;
//NumOrdered = 1;
OnPropertyChanged(new PropertyChangedEventArgs("Quantity"));
}
}
}
组合框
<ComboBox x:Name="cbbxMainCourse" Margin="40,40,40,240" Width="400" Height="30" SelectionChanged="cbbxMainCourse_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
【问题讨论】:
-
数据仅在网格或数据库中@Psycho Li
标签: c# wpf visual-studio xaml datagrid