Автоматическое получение списка товаров в накладной.
Цель: в тот момент, когда пользователь выберет нужный заказ на форме редактирования накладной, необхоодимо создать детейлы (ЗаписьВНакладной
) на основе того, что указано в заказе.
1.Добавить Заказ
в представление строки заказа, убрать галочку в поле Видимость
.
2.Перегенерировать объекты.
3.в NakladnayaE.aspx.cs
прописать:
using ICSSoft.STORMNET.Business;
using ICSSoft.STORMNET.FunctionalLanguage;
using ICSSoft.STORMNET.Windows.Forms;
4.Далее исправить метод PreApplyToControls
следующим образом:
protected override void PreApplyToControls()
{
if (IsPostBack && (DataObject == null || DataObject.GetStatus(true) == ObjectStatus.Created))
{
var заказ = ctrlЗаказ.SelectedMasterPK;
ctrlЗаказ.MasterViewName = Заказ.Views.ЗаказL.Name;
var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(СтрокаЗаказа), СтрокаЗаказа.Views.СтрокаЗаказаE);
lcs.LimitFunction = FunctionBuilder.BuildEquals<СтрокаЗаказа>(x => x.Заказ, заказ);
var строкиЗаказа = DataServiceProvider.DataService.LoadObjects(lcs);
foreach (var s in строкиЗаказа)
{
var строкаЗаказа = (СтрокаЗаказа)s;
DataObject.ЗаписьВНакладной.Add(new ЗаписьВНакладной { Количество = строкаЗаказа.Количество, Товар = строкаЗаказа.Товар });
}
}
}
В данном методе выполняется проверка, произошел ли PostBack
, после чего с помощью сервиса данных подгружаются детейлы для класса Заказ
(в подгружаемом представлении есть детейлы), так как по умолчанию они не загружаются.
После загрузки в цикле формируются и заполняются детейлы.
Не забываем изменить значение параметра flexberryautogenerated
на false
, чтобы форма не потерять изменения при перегенерации.
5.Для того, чтобы метод PreApplyToControls
сработал сразу после выбора значения в лукапе, необходимо добавить обработчик события change
лукапа, в котором вызвать PostBack
.
В NakladnayaE.aspx
прописать:
<script type="text/javascript">
$('#<%= ctrlЗаказ.ClientID %>').on('change', function (e, d) {
$.ics.postBack('', '');
});
</script>
6.Не забыть в каждом изменяемом файле изменить значение параметра flexberryautogenerated
, чтобы избежать потери изменений.