如何从自定义表单使用 Oid 更新 XAF 中记录的值?
How to update value of a record in XAF, using Oid, from a custom form?
如果记录的 Oid 与我从文本框获得的输入匹配,我需要从自定义表单更新 DevExpress XAF 中记录的值。
我尝试通过以下代码使用 UnitofWork,但它不起作用:
UnitOfWork uow = new UnitOfWork();
CriteriaOperator op = CriteriaOperator.Parse("Oid = ?", ReceivedTextBox.Text);
Bilty bilty = uow.FindObject<Bilty>(op);
if (bilty == null) return;
bilty.Received = true;
uow.CommitChanges();
有人能告诉我我做错了什么吗?我已经尝试在官方 DevExpress 论坛上搜索解决方案,但这是我能找到的最好的解决方案。
我想问题出在 UnitofWork
连接上。您发布的代码暗示使用了默认数据层,因此 xpo 将为默认数据层创建一个新的 AccessDb 并将搜索当然找不到的对象,因为这是一个空数据库。由于您没有发布有关此自定义表单所在位置的详细信息,我假设它在同一个 Xaf 应用程序上,并且您使用了一个操作来显示它。因此,我建议您将 Xaf 应用程序实例传递给您的表单并创建一个对象空间
objectspace=application.CreateObjectSpace()
使用该对象空间而不是 UnitOfWork 来查询和更新记录。
如果记录的 Oid 与我从文本框获得的输入匹配,我需要从自定义表单更新 DevExpress XAF 中记录的值。
我尝试通过以下代码使用 UnitofWork,但它不起作用:
UnitOfWork uow = new UnitOfWork();
CriteriaOperator op = CriteriaOperator.Parse("Oid = ?", ReceivedTextBox.Text);
Bilty bilty = uow.FindObject<Bilty>(op);
if (bilty == null) return;
bilty.Received = true;
uow.CommitChanges();
有人能告诉我我做错了什么吗?我已经尝试在官方 DevExpress 论坛上搜索解决方案,但这是我能找到的最好的解决方案。
我想问题出在 UnitofWork
连接上。您发布的代码暗示使用了默认数据层,因此 xpo 将为默认数据层创建一个新的 AccessDb 并将搜索当然找不到的对象,因为这是一个空数据库。由于您没有发布有关此自定义表单所在位置的详细信息,我假设它在同一个 Xaf 应用程序上,并且您使用了一个操作来显示它。因此,我建议您将 Xaf 应用程序实例传递给您的表单并创建一个对象空间
objectspace=application.CreateObjectSpace()
使用该对象空间而不是 UnitOfWork 来查询和更新记录。