Interaction Class
Interaction
class contain some x++ logic to handle user interactions and make buttons or
other controls visible or enabled.
To
achieve more control over how your model driven list pages behaves, you can
specify a custom interaction class by using interactionclass property of the
form. The name of your class end with Listpageinteraction.
It should inherits from SysListPageInteractionBase.
- Interaction class extends SysListPageInteractionBase class.
- Here we are having override methods
Initializing : Called
when the form is initializing – Similar to the form init method
intializeQuery : Also
called when the form is initializing – Similar to the datasource init method
selectionChanged : Called when the active record changes – Similar
to the datasource active method.
setButtonEnabled : Should
be overridden to dynamically enable/disable buttons based on the current
selection. This is called from the selectionChanged method.
setButtonVisibility : Shows or hides grid fields. This method is
called once when the forms opens
- difference between interaction classes and normal classes?
The interaction classes are extending a base ListPageInteraction class. This has some methods supported by the kernel to interact e.g. with initializations of the list page form. Other classes can be build stand alone to execute e.g. a batch process or represent a web service or posting classes.
SelectionChanged
Syntax
public void
selectionChanged()
{
TableName
TableBuffer = this.listPage().activeRecord(queryDataSourceStr(QueryName,
DataSourceName));
Super();
if(Condition) //like -
if(TableBuffer.fieldName == Something)
this.listPage().actionPaneControlEnabled(formControlStr(FormName,
ControlName),true);
}
Example:-
public void
selectionChanged()
{
Requisition requisition = this.listPage().activeRecord(queryDataSourceStr(RequisitionQuery,Requisition_1));
super();
if(requisition.WorkflowApprovalStatus ==
WorkflowApprovalStatus::Approved)
this.listPage().actionPaneControlEnabled(formControlStr(RequisitionListPage,Edit),true);
else
this.listPage().actionPaneControlEnabled(formControlStr(RequisitionListPage,Edit),false);
}
No comments:
Post a Comment