[英]WCF RIA Services Issue With Updating
通过WCF RIA服务进行更新后,刷新页面上的数据时遇到问题。
我在页面上有一个ComboBox和一个Button。 用户从组合框中选择一个项目,然后单击按钮。 这将对数据库中的项目进行软删除(设置为“ Active” = false)。 但是,我希望在更新完成后将其从ComboBox中删除。 这是我的问题所在。
InventorySystemDomainContext context = new InventorySystemDomainContext();
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
Cigarette c = cboCigarette.SelectedItem as Cigarette;
c.Active = false;
SubmitOperation so = context.SubmitChanges();
so.Completed += delegate (object s, EventArgs es)
{
LoadComboBox();
}
}
private void LoadComboBox()
{
cboCigarettes.DataSource = null;
cboCigarettes.DataSource = context.Cigarettes;
context.Load(context.GetCigarettesQuery());
}
单击删除按钮后,所有代码都会运行。 但是,已删除的项目仍在ComboBox中(即使记录已在数据库中更新)。 如果刷新页面,则该项目将从组合框消失。
有任何想法吗?
PS:我没有记忆,所以从内存中编写了这段代码。 所以我可能忘记了一行,但我想我已经掌握了所有相关的内容。
您是否尝试过将ComboBox.ItemsSource设置为从Load方法返回的Entities集合? 实体集(context.cigarettes)正在聚合(它们包含来自多个负载的数据),而LoadOperation.Entities不是(仅包含其代表的负载中的数据)。
可接受的解决方案的问题在于,现在集合已断开连接,这与添加和删除绑定项的内置样式不符。
也许更好的解决方案是在软删除后分离有问题的实体
InventorySystemDomainContext context = new InventorySystemDomainContext();
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
Cigarette c = cboCigarette.SelectedItem as Cigarette;
c.Active = false;
SubmitOperation so = context.SubmitChanges(OnCigaretteSaved, null);
}
private void OnCigaretteSaved(SubmitOperation so)
{
context.Cigarettes.Detach(context.Cigarettes.Where(item => item.Active == false).First());
}
private void LoadComboBox()
{
cboCigarettes.DataSource = null;
cboCigarettes.DataSource = context.Cigarettes;
context.Load(context.GetCigarettesQuery());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.