У меня есть структура заголовка / строки на экране, которая должна обеспечивать большую гибкость при вводе данных, но не позволяю удерживать запись до тех пор, пока все позиции не будут иметь идентификатор инвентаря.В момент создания записи идентификатор инвентаризации может не существовать, поэтому я не могу сделать поле идентификатора инвентаря обязательным при первоначальном вводе.
Я ожидал, что PXSelect будет извлекать любые новые записи из базы данных, но удерживатьна в настоящее время кэшированные данные из записи.Вместо этого я обнаружил, что запись новой позиции не доступна через PXSelect, пока я не сохраню запись.Это означает, что снятие флажка Удерживать игнорирует идентификатор инвентаря, который я вижу на экране, и приведенный ниже код создает исключение для «NoInventoryID».
#region MyHdr_Hold_FieldVerifying
protected virtual void _(Events.FieldVerifying<MyHdr.hold> e)
{
if ((bool?)e.NewValue == true) return;
MyHdr row = (MyHdr)e.Row;
MyLine line =
PXSelect<MyLine, Where<MyLine.hdrID, Equal<Current<MyHdr.hdrID>>>>
.SelectSingleBound(this, new object[] { e.Row });
if (line == null)
throw new PXSetPropertyException(Messages.NoLines, PXErrorLevel.Warning);
line =
PXSelect<MyLine, Where<MyLine.hdrID, Equal<Current<MyHdr.hdrID>>, And<MyLine.inventoryID, NotEqual<Null>>>>
.SelectSingleBound(this, new object[] { e.Row });
if (line != null)
throw new PXSetPropertyException(Messages.NoInventoryID, PXErrorLevel.Warning);
}
#endregion
У меня есть CommitChanges = True в поле Идентификатор инвентаря, поэтомуКажется, для проверки линий сетки при проверке поля удержания заголовка требуется специальный метод.
Как просмотреть несохраненные данные в сетке (дочерние строки заголовка), чтобы проверить, не заставляя пользователя сохранятьсначала записи?