Как сделать, чтобы при создании нового объекта открывался DetailView не для этого объекта, а для другого (parent) объекта?

34 views
Skip to first unread message

Valeriy Osipov

unread,
Jul 25, 2019, 6:17:46 AM7/25/19
to Russian DevExpress XAF
%subj%

Павел Олейник

unread,
Aug 2, 2019, 7:57:18 AM8/2/19
to Russian DevExpress XAF
Нужно унаследовать NewObjectController и переопределить метод

  protected ovveride void New(SingleChoiceActionExecuteEventArgs args)
    {
     base.New(args);
args.ShowViewParameters.CreatedView = (View) this.Application.CreateDetailView()  ТУТ создайте какой нужен
    } 

четверг, 25 июля 2019 г., 13:17:46 UTC+3 пользователь Valeriy Osipov написал:
%subj%

Valeriy Osipov

unread,
Aug 4, 2019, 4:45:11 PM8/4/19
to Russian DevExpress XAF
Решил проблему следующим образом:
private NewObjectViewController _newController;
private IObjectSpace _objectSpace;

public CounterObjectMeasureTechnologicalProcessValueController()
{
InitializeComponent();
TargetObjectType = typeof(CounterObjectMeasureTechnologicalProcessValue);
}

protected override void OnActivated()
{
base.OnActivated();

_newController = Frame.GetController<NewObjectViewController>();
if (_newController != null)
{
_newController.ObjectCreating += NewControllerOnObjectCreating;
}

_objectSpace = Application.CreateObjectSpace(typeof(CounterObjectMeasure));
}

private void NewControllerOnObjectCreating(object sender, ObjectCreatingEventArgs e)
{
Application.DetailViewCreating += ApplicationOnDetailViewCreating;
}

private void ApplicationOnDetailViewCreating(object sender, DetailViewCreatingEventArgs e)
{
if (!(e.Obj is CounterObjectMeasureTechnologicalProcessValue)) return;

var objectMeasure = _objectSpace.CreateObject<CounterObjectMeasure>();
var detailView = Application.CreateDetailView(objectMeasure);
detailView.ViewEditMode = ViewEditMode.Edit;

e.View = detailView;
}

protected override void OnDeactivated()
{
if (_newController != null)
{
Application.DetailViewCreating -= ApplicationOnDetailViewCreating;
_newController.ObjectCreating -= NewControllerOnObjectCreating;
}

base.OnDeactivated();
}

On Thursday, 25 July 2019 13:17:46 UTC+3, Valeriy Osipov wrote:
%subj%
Reply all
Reply to author
Forward
0 new messages