viernes, 29 de agosto de 2014

Usar formularios como LookUp (desplegable) en Dynamics AX 2012

Imaginemos que necesitamos un control StringEdit que nos despliegue una lista de todos los proveedores. Podemos hacerlo de manera automática asignando el ExtendedDataType al campo y estaría listo. Pero si queremos personalizar los campos que nos despliega podemos usar formularios como LookUp.

Empezaremos creando el propio formulario desplegable o LookUp:











En el nodo Data Sources añadimos uno nuevo con la tabla VendTable:













Expandimos el nodo Desings y creamos un Grid con los campos que necesitemos. El ancho de Grid lo definimos en "Column width". En el control VendTable_AccountNum definimos la propiedad AutoDeclaration en Yes:

Ahora expandimos el nodo Methods del formulario, anulamos el método init y añadimos el siguiente código:

public void init()
{
    super();
    element.selectMode(VendTable_AccountNum);
}

Lo utlimo que haremos en el formulario LookUp sera establecer las propiedades siguientes del nodo diseño tal y como vemos en la imagen: 

Width = 500
Style = Lookup



Ahora crearemos el formulario que utiliza este LookUp. He creado un formulario simple con un control StringEdit que nos desplegará el lookup que hemos creado anteriormente:

Ahora crearemos dos métodos, uno para registrar el control con el lookup y otro para llamar al formulario lookup y obtener el valor seleccionado.

protected void configureVendLookUp(FormStringControl stringControl)
{
    if (stringControl)
    {
        stringControl.visible(true);
        stringControl.registerOverrideMethod(methodStr(FormStringControl, lookup),identifierStr(VendLookUp), this);
    }
}

El segundo método se llama cuando hacemos clic en el botón lookup del control StringEdit:

private void VendLookUp(FormStringControl stringControl)
{
    Args args = new Args(identifierStr(FormVendTableLookUp));
    FormRun lookupFormRun;

    args.parm("");
    args.caller(this);

    lookupFormRun = ClassFactory::formRunClassOnClient(args);
    lookupFormRun.init();

    stringControl.performFormLookup(lookupFormRun);
    lookupFormRun.wait();
}

Ejecutamos el formulario y hacemos clic en el botón desplegable. Vemos como nos selecciona la cuenta del proveedor en el control.

Espero que os pueda ser de utilidad.

1 comentario:

  1. guapo!!! tus admiradoras queremos que nos comas el dynamics!!

    ResponderEliminar