Quantcast
Channel: Microsoft Dynamics AX - Technical
Viewing all articles
Browse latest Browse all 126

Dialog in AX 2012 (MultiSelect control in Dialog):

$
0
0
Hi, let me walk-through the dialog feature in AX 2012.

Sometime when developing complex functionality, Dialog plays a significant role. Creation of dialog always provide you lot of standard features such as standard dialog form throughout ax, batch tab under form, validations, pack – unpack to persist the last storage value, to select query values(SysQuery form) etc..
Illustrating the dialog in AX2012 – Creation of dialog fields using standard dialogfield methods (which gives us lookup using EDT) or get custom lookup using formbuild control under the dialog and also get an benefit of having multi select under lookups. At the same time we can also achieve Sysquery form (Select button) under the dialog through classes.



We can have multi select control for dialog field using code below:

class VT_DialogEx extends RunBaseBatch
{
    DialogField                 df, df1;
    CustAccount                 ct;
    DialogGroup                 dfg, dfg1;

    CustAccount                 dfval;

    QueryRun                    queryRun;

    FormStringControl           fsc;
    FormBuildControl            fbc;
    FormBuildStringControl      fbsc;


    SysLookupMultiSelectCtrl    sysms;

    container                   conValues;

}

protected Object dialog()
{

    DialogRunbase   dialog = super();

    dialog.allowUpdateOnSelectCtrl(true);
    dfg1 = dialog.addGroup("Standard Lookup");
    df = Dialog.addField(extendedTypeStr(CustAccount));
    df1 = dialog.addFieldValue(extendedTypeStr(Name),"");
    df1.allowEdit(false);
    dfg = dialog.addGroup("Custom Lookup");
    fbc = dialog.formBuildDesign().control(dfg.name());

    fbsc = fbc.addControl(FormControlType::String, "User id");
    fbsc.label("User id");

    return dialog;
}


publicvoiddialogPostRun(DialogRunbase dialog)
{
    FormRun                 fr;

    super(dialog);


    fr = dialog.dialogForm().formRun();
    if (fr)
    {
        sysms = SysLookupMultiSelectCtrl::construct(fr, Fr.design().control(fbsc.id()), queryStr(VT_UserInfoQuery));
    }
   // dialog.formRun().controlMethodOverload(true);
   // dialog.formRun().controlMethodOverloadObject(this);


}

publicvoidinitParmDefault()
{

    Query query;

    ;

    super();

    query = new Query();

    query.addDataSource(tableNum(vendtable));

    queryRun = new QueryRun(query);

}


public QueryRun queryRun()
{
    ;
    return queryRun;
}



As shown in above image we get multi select option for Userid field in dialog and once clicking on ok button retrieve the dialog field using code below:

publicbooleangetfromdialog()
{
    boolean ret;
   // info(strFmt("%1", df.value()));

    dfval = df.value();

    conValues = sysms.get();

    //info(strFmt("%1", con2StrUnlimited(convalues)));
    returnsuper();
}


Do let me know if you are looking for XPO of it.

Stay tuned.. Happy Daxing J

Viewing all articles
Browse latest Browse all 126

Trending Articles