Цель: чтобы избежать такой ситуации, когда количество товара на складе вычитается несколько раз, необходимо организовать блокирование статуса заказа, если заказ уже оплачен.

Для реализации данного поведения нужно исправить метод PostApplyToControls() в коде формы редактирования заказа ZakazE.aspx.cs следующим образом:

protected override void PostApplyToControls()
{
	if ((DataObject != null) && (DataObject.Статус == СостояниеЗаказа.Оплаченный))
	{
		wb.SetReadonlyToControl(ctrlСтатус, true);
	}

	Page.Validate();
}

Метод PostApplyToControl() вызывается сразу за AfterApplyToControls(), а метод AfterApplyToControl(), в свою очередь, вызывается после распределения данных объекта по контролам страницы. На момент вызова этого метода все контролы на странице уже обновлены в соответствии с данными объекта.

Перейти