Passing parameters from Managed code to X++ in dataset


In the user control code behing add an event handler to the CreatingDataSetRun event on the AxDataSource control


protected void Page_Init(object sender, EventArgs e)
{
this.AxDataSource1.CreatingDataSetRun += new EventHandler<CreatingDataSetRunEventArgs>(AxDataSource1_CreatingDataSetRun);
}

Set the param value  to the event arugments

void AxDataSource1_CreatingDataSetRun(object sender, CreatingDataSetRunEventArgs e)


{


e.DataSetRunArgs.parm = “4000”;


}


 


In AOT override or add method in the data set and use element.args().parm() to received the paramter  


public void executeQuery()
{


 QueryBuildRange             custRange;
 ;
        custRange = SysQuery::findOrCreateRange(this.query().dataSourceNo(1), fieldnum(CustTable, AccountNum));
        custRange.value(element.args().parm());
   super();


}


You can also pass an Enum. For example


void AxDataSource1_CreatingDataSetRun(object sender, CreatingDataSetRunEventArgs e)
{
e.DataSetRunArgs.parmEnumType =
EnumMetadata.EnumNum(this.AxSession, “EPFormAction”);
e.DataSetRunArgs.parmEnum(2);
}


 


public void init()
{
    super();


     if (element.args().parmEnumType() == enumnum(EPFormAction) && element.args().parmEnum() == EPFormAction::CreateMode)
    {
        //do somethign here


    }
}

Skip to main content