我有一个包含三个表的数据库。 我还有一个datagrid,它显示了两个实体(表)的几个属性。 要从两个表中选择信息,我使用一个工作正常的存储过程。 我想在这个数据网格中选择一行,按一个按钮,这将被添加到数据库的第三个表中。另一个按钮应该用于显示实体的全部信息(所有属性)。 我不知道在ChosenBooksAuthors之后用X做什么 - 它应该是X的BookID,但我无法达到它,我该怎么办?如何将选定的行添加到表中? XAML:
<Canvas>
<DataGrid CanUserAddRows="False" x:Name="Info" SelectedItem="{Binding Path=ChosenBooksAuthors}" ItemsSource="{Binding Path=Bookslist}" Background="Honeydew" Canvas.Top="190" Canvas.Left="38" Width="297" Height="105" ></DataGrid>
</Canvas>
C#:
private List<Book> _VMBooksAuthors = new List<Book>();
public List<Book> ChosenBooksAuthors
{
get
{
return _VMBooksAuthors;
}
set
{
_VMBooksAuthors = value;
OnPropertyChanged("ChosenBooksAuthors");
}
}
private void BasketButton_Click(object sender, RoutedEventArgs e)
{
Basket b = db1.BasketSet.Where(c => c.BookID == ChosenBooksAuthors.X).FirstOrDefault();
db1.BasketSet.Add(b);
db1.SaveChanges();
}
答案 0 :(得分:1)
ChosenBooksAuthors是一个集合,所选项目应该是Book。尝试:
<DataGrid CanUserAddRows="False" x:Name="Info" SelectedItem="{Binding Path=Book}" ...
或者只是演员:
private void BasketButton_Click(object sender, RoutedEventArgs e)
{
var book = (Book)myDataGrid.SelectedItem;
Basket b = db1.BasketSet.FirstOrDefault(c => c.BookID == book.BookID); // No need for where with FirstOrDefault()
db1.BasketSet.Add(b);
db1.SaveChanges();
}