How to achieve dialog with lookup control

How to create a dialog with the lookup as a control, the other control SalesId ItemId lookup is the only thing that SalesId.

Done as follows.
1.declare control by extended data type to use.

class LookupDialog extends RunBase
{
    FormStringControl   SalesIdCtrl, ItemIdCtrl; 
}

2. Creation dialog.

复制代码
protected Object dialog(Dialog dialog, boolean forceOnClient)
{
    DialogRunBase ret;
    ;
    ret = super(dialog, forceOnClient);
    ret.caption('Costing report by order');

    SalesIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'SalesId');
    SalesIdCtrl.extendedDataType(extendedTypeNum('SalesId'));


    ItemIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'ItemId');
    ItemIdCtrl.extendedDataType(extendedTypeNum('ItemId'));


    return ret;
}
复制代码

3.Set the control can not override method at runtime.

复制代码
public void dialogPostRun(DialogRunbase dialog)
{
    ;
    super(dialog);
    dialog.dialogForm().formRun().controlMethodOverload(true);
    dialog.dialogForm().formRun().controlMethodOverloadObject(this);
    SalesIdCtrl = dialog.dialogForm().formRun().design().controlName('SalesId');
    ItemIdCtrl = dialog.dialogForm().formRun().design().controlName('ItemId');
}
复制代码

4.Creating lookup method.

复制代码
void ItemId_lookup()
{
    Query                   query          = new Query();
    SysTableLookup          sysTableLookup =
    SysTableLookup::newParameters(tableNum(SalesLine), SalesIdCtrl);
    ;
    sysTableLookup.addLookupField(fieldNum(SalesLine, ItemId));
    sysTableLookup.addLookupField(fieldNum(SalesLine, Name));
    query.addDataSource(tableNum(SalesLine)).addRange(fieldNum(SalesLine,SalesId)).value(SalesIdCtrl.text());
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
复制代码

5.Detailed method other

复制代码
public container pack()
{
    return conNull();
}

public boolean unpack(container packedClass)
{
    return true;
}

static void main(Args _args)
{
    LookupDialog test1 = new LookupDialog();
    ;
    if (test1.prompt())
    {
        test1.run();
    }
}
复制代码

 

posted @   Fandy Xie  Views(445)  Comments(0Edit  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示