我正在使用SQL CE,WPF,实体框架3.5sp2和iam尝试使用数据网格作为我的订单输入控件用户输入产品订单。 我计划将其绑定到enitiy frmae工作模型,abd寻找2路更新?
private void button1_Click(object sender, RoutedEventArgs e)
{
using (MasterEntities nwEntities = new MasterEntities())
{
var users = from d in nwEntities.Companies
select new CompanyRowModel{ CompanyId = d.CompanyId, CompanyName d.CompanyName, Place = d.Place }
listBox1.DataContext = users;
dataGrid1.DataContext = users;
}
}
public class CompanyRowModel
{
public int CompanyId { get; set; }
public string CompanyName { get; set; }
public string Place{ get; set; }
}
我的xaml编码就像这样
<Grid>
<ListBox Name="listBox1" ItemsSource="{Binding}" />
<Button Content="Show " Name="button1" Click="button1_Click" />
<DataGrid AutoGenerateColumns="False" Name="dataGrid1" ItemsSource="{Binding}" >
<DataGrid.Columns>
<DataGridTextColumn Header=" ID" Binding="{Binding CompanyId}"/>
<DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"/>
<DataGridTextColumn Header="Place" Binding="{Binding Place}" />
</DataGrid.Columns>
</DataGrid>
<Button Content="Save" Name="button2" VerticalAlignment="Bottom" Click="button2_Click" />
</Grid>
已编辑:
我做了@vorrtex显示的更改,但是,然后我添加了另一个按钮来保存chages,在按钮点击事件中我添加了以下代码,但显示正在更新错误
private void button2_Click(object sender, RoutedEventArgs e)
{
nwEntities.SaveChanges();
}
答案 0 :(得分:1)
是的,这是可能的。
好的,在你的编辑之后
您现在将选定的属性值存储在新的特殊类CompanyDataRowModel中。
这不是一个被跟踪的课程。要么编写自己的自我跟踪实体类,要么使用Company类。
答案 1 :(得分:1)
您遇到此代码的问题:
select new { d.CompanyId, d.CompanyName, d.Place }
此匿名类中的属性是只读的,因此您应该创建具有这些属性的真实类。
public class CompanyRowModel
{
public int CompanyId { get; set; }
//...
}
//...
var users = from d in nwEntities.Companies
select new CompanyRowModel{ CompanyId = d.CompanyId, CompanyName = d.CompanyName, Place = d.Place }
答案 2 :(得分:0)
您可能对 WPF Application Framework (WAF) 的 BookLibrary 示例应用感兴趣。它使用实体框架和SQL CE作为DB,它包含WPF DataGrid。