#acumatica
#acumatica
Вопрос:
Я часто нахожу, что у меня будет представление данных как таковое
PXSelectJoin<A, LeftJoin<B, ON<A.foreignKey, Equal<B.pk>>>, LeftJoin<C, ON<B.foreignKey, Equal<C.pk>>>> View;
И я вставлю строку в резервный кэш представления:
View.Insert(new A()
{
ForeignKey = KeyThatExistsInTheDatabase
}
)
И строка A будет вставлена правильно, но объединенные таблицы B и C не будут отображаться в пользовательском интерфейсе, хотя я создал правильную ссылку в строке A при вставке. Пользовательский интерфейс будет отображать только данные из таблицы A, а остальные поля из объединенных таблиц будут равны нулю. Однако, пока я не нажму сохранить / вручную обновить эту строку в пользовательском интерфейсе, волшебным образом появятся данные.
Я пробовал:
View.Select();
View.View.RequestRefresh();
но ни одно из них не решает мою проблему. Кто-нибудь надежно смог ввести все объединенные таблицы, когда была вставлена строка с правильным внешним ключом?
Ответ №1:
Вы можете получать записи данных в одном из двух режимов: объединенный или только для чтения. Если вы хотите просмотреть несохраненные изменения из базы данных вместе с измененными записями в кэше, выберите PXSelect<>
Имейте в виду, что платформа объединяет записи данных только для основного ЦАП представления данных.
По этой причине вы не увидите новую запись в объединенных таблицах, пока изменения не будут сохранены в базе данных (Perist или кнопка Сохранить).
Возможный путь к вашей цели — переопределить ваш dataview как PXSelectReadonly. Но в этом случае вы должны реализовать свои собственные методы обработки записей.
Надеюсь, это поможет с пониманием.