Copy to new from browser screen

Hi there,

In Cuba 6.10.3 i used the code below to copy an entity to new from the browser screen. In cuba 7 i’m stuck can someone please help?

The code is attached.

bezoekerBrowse.txt (2.1 KB)

I’m stuck on:

bezoekersDc.addItem(newbezoeker);
bezoekersDc.commit();

Use dataContext.create instead of metadata.create(newbezoeker). In Platform 7, if you created a new entity instance through metadata.create, then you need to calldataContext.merge(newbezoeker)so that the screen tracks and saves this record.
The new dataContext.create and creates a new instance and adds it to track changes - two in one.

Andrey,

Thanks for your reply, but i need a little more help. Were in the code do i make the suggested changes?

Regards,

Lloyd

You need to change the method like this (I didn’t check the iDE errors)

Bezoeker copybezoeker(Bezoeker bezoekerToCopy) {

            Bezoeker newbezoeker = metadata.create(Bezoeker.class);
            newbezoeker.setNaam(bezoekerToCopy.getNaam() + " - copy");
            newbezoeker.setBedrijfOfOrganisatie(bezoekerToCopy.getBedrijfOfOrganisatie());
            newbezoeker.setEmail(bezoekerToCopy.getEmail());
            newbezoeker.setIdSoort(bezoekerToCopy.getIdSoort());
            newbezoeker.setIdNummer(bezoekerToCopy.getIdNummer());
            newbezoeker.setAfspraakMet(bezoekerToCopy.getAfspraakMet());
            newbezoeker.setBijzonderheden(bezoekerToCopy.getBijzonderheden());

            Bezoeker trackedBezoeker = dataContext.merge(dataManager.commit(newbezoeker)); //commit and add for track change new record
            bezoekersDc.getMutableItems().add(trackedBezoeker); //and add commited and tracked record in Dc
            return trackedBezoeker; //return commited and tracked record
        }

Still no luck. My code is attached.

Regards,

LScontroller.txt (2.6 KB)

Hi Lloyd,

maybe you can do something like in the attached
example.
I used a very small entity, but should work in yours too.

@UiController("abf$Einheit.edit")
@UiDescriptor("einheit-edit.xml")
@EditedEntityContainer("einheitDc")
@LoadDataBeforeShow
public class EinheitEdit extends StandardEditor<Einheit> {

    @Inject
    private Button testBtn;

    @Inject
    private Metadata metadata;

    @Inject
    private DataManager dataManager;
    
    @Inject
    private InstanceContainer<Einheit> einheitDc;

    @Subscribe("testBtn")
    public void onTestBtnClick(Button.ClickEvent event) {
        Einheit einheit = this.getEditedEntity();

        Einheit einheit2 =  metadata.create(Einheit.class);

        einheit2.setEinheit(einheit.getEinheit()+"-1");
        einheit2.setCode(einheit.getCode()+"-1");

        Einheit saved = dataManager.commit(einheit2);

        einheitDc.setItem(saved);

    }
    
    
    
}

Regards,
Martin

1 Like

Thanks Martin works just fine.

Regards,

Lloyd