Axapta 方法中的D365更新条件
我有面积选项卡,其中包含一些计算网格。 该计算取决于所选的面积。 下一种情况是:一个对象可以有多个区域,当我打开“区域”选项卡时,它的计算结果良好,但当我在对象中将区域从一个更改为另一个时,计算中的值保持在上一个的值。换句话说:它不会得到更新。我正在使用以下代码:Axapta 方法中的D365更新条件,axapta,x++,dynamics-365-operations,Axapta,X++,Dynamics 365 Operations,我有面积选项卡,其中包含一些计算网格。 该计算取决于所选的面积。 下一种情况是:一个对象可以有多个区域,当我打开“区域”选项卡时,它的计算结果良好,但当我在对象中将区域从一个更改为另一个时,计算中的值保持在上一个的值。换句话说:它不会得到更新。我正在使用以下代码: [Control("TabPage")] class TabLineAreaGroup { public void pageActivated() { PMCContractArea contractA
[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);
}
}
我需要在这段代码中添加什么,所以当面积更改为更新网格中的计算时 对于Dynamics 365,Microsoft有时会拒绝使用方法而不更新文档,或者保留可用的方法,但尚未实现它们 对于D365,您可能需要使用
选项卡
控件上的事件处理程序方法
下面是一个示例,我刚刚创建了一个表单
,其中包含一对选项卡
+网格
和客户组的数据源
/// <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');
}
//
///
///
///
///
[FormControlEventHandler(formControlStr(TestForm,FormTabControl1),FormControlEventType::TabChanged)]
公共静态无效FormTabControl1\u OnTabChanged(FormControlSender,FormControlEventArgs e)
{
//您可以与FormRun交互
FormRun FormRun=sender.FormRun();
//您可以与实际控件交互(从事件处理程序)
FormTabControl FormTabControl=发送方为FormTabControl?发送方为FormTabControl:null;
//你可以得到一些事件
FormTabControlTabChangedEventArgs FormTabControlTabChangedEventArgs=e为FormTabControlTabChangedEventArgs?e为FormTabControlTabChangedEventArgs:null;
//您可以与选项卡页面交互
if(formTabControl&&formTabControlTabChangedEventArgs)
{
FormControl fc=formTabControl.controlNum(formTabControlTabChangedEventArgs.oldTab());
FormTabPageControl tabPageOld=formTabControl.controlNum(formTabControlTabChangedEventArgs.oldTab());
FormTabPageControl tabPageNew=formTabControl.controlNum(formTabControlTabChangedEventArgs.newTab());
信息(strFmt(“选项卡从%1更改为%2”,tabPageOld.caption(),tabPageNew.caption());
}
//您可以与数据源交互
FormDataSource fdsCustGroup=formRun.dataHelper().FindDataSource('CustGroup');
}
Okie。但是如何处理该事件处理程序呢?如何控制更改/更新?@DarthCSharper-请参阅答案中我的更新代码示例。你可以做任何你想做的事情。