0

I have Areas tab which contain grid with some calculations. That calculations depends from area which is selected. Situation is next: One object can have several areas, and when I open Areas tab, it calculates good but, when in object I change Area from one to another, value in calculations stays from previous. On the other words: it not get updated. I am using this code:

[Control("TabPage")]
class TabLineAreaGroup
{
    public void pageActivated()
    {
        PMCContractArea contractArea;
        AmountMST sumContractArea;

        super();

        pmcContractLine_ds.readCommonAreas(pmcContractLine);
        h1_h2.realValue(pmcContractLine_ds.h1_h2(pmcContractLine));
        efa.realValue(pmcContractLine_ds.efa(pmcContractLine));
        bfa.realValue(pmcContractLine_ds.bfa(pmcContractLine));
        mfa.realValue(pmcContractLine_ds.mfa(pmcContractLine));
        sumArea.realValue(h1_h2.realValue() + efa.realValue() + bfa.realValue() + mfa.realValue());

        while select AreaSelector, sum(RentalValue)
            from contractArea
            group by AreaSelector
            where contractArea.ContractId == pmcContract.ContractId
                && contractArea.RentalObjectId == pmcContractLine.RentalObjectId
        {
            sumContractArea += contractArea.RentalValue;
            switch (contractArea.AreaSelector)
            {
                case PMEAreaSelector::CommonAreaBuilding :
                    contractAreaBFA.realValue(contractArea.RentalValue);
                    break;
                case PMEAreaSelector::CommonAreaSection :
                    contractAreaEFA.realValue(contractArea.RentalValue);
                    break;
                case PMEAreaSelector::PrimaryArea, PMEAreaSelector::SecondaryArea :
                    contractAreaH1_H2.realValue(contractArea.RentalValue);
                    break;
                case PMEAreaSelector::CommonAreaFixed :
                    contractAreaMFA.realValue(contractArea.RentalValue);
                    break;
            }
        }
        contractAreaSum.realValue(sumContractArea);
    }

}

What I need to add in this code, so when area is changed to update the calculations in grid ?

FH-Inway
  • 4,432
  • 1
  • 20
  • 37
DarthCSharper
  • 133
  • 1
  • 13

1 Answers1

1

For Dynamics 365, Microsoft sometimes deprecates methods and doesn't update documentation, or they leave methods available, but have not implemented them.

For D365, it's likely you will need to use the event handler method on the Tab control.

Below is a sample where I just created a form with a couple Tab+Grid and the datasource of CustGroup

/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormControlEventHandler(formControlStr(TestForm, FormTabControl1), FormControlEventType::TabChanged)]
public static void FormTabControl1_OnTabChanged(FormControl sender, FormControlEventArgs e)
{
    // You can interact with FormRun
    FormRun                             formRun                             = sender.formRun();

    // You can interact with the actual control (from event handler)
    FormTabControl                      formTabControl                      = sender is FormTabControl ? sender as FormTabControl : null;

    // You can get events
    FormTabControlTabChangedEventArgs   formTabControlTabChangedEventArgs   = e is FormTabControlTabChangedEventArgs ? e as FormTabControlTabChangedEventArgs : null;

    // You can interact with the tab pages
    if (formTabControl && formTabControlTabChangedEventArgs)
    {
        FormControl         fc = formTabControl.controlNum(formTabControlTabChangedEventArgs.oldTab());
        FormTabPageControl  tabPageOld = formTabControl.controlNum(formTabControlTabChangedEventArgs.oldTab());
        FormTabPageControl  tabPageNew = formTabControl.controlNum(formTabControlTabChangedEventArgs.newTab());

        info(strFmt("Tab changed from %1 to %2", tabPageOld.caption(), tabPageNew.caption()));
    }

    // You can interact with datasources
    FormDataSource fdsCustGroup = formRun.dataHelper().FindDataSource('CustGroup');
}
Alex Kwitny
  • 11,211
  • 2
  • 49
  • 71