Multiselección de registros en tablas de formularios

Multiselección de registros en tablas de formularios

Se ha añadido la posibilidad de seleccionar múltiples registros en la tablas de formularios (SQLTables), y funciones para poder procesar la selección realizada, tanto desde el formulario, mediante Javascript, como desde servidor, mediante etiquetas XSQL-Script.

En primer lugar, para poder utilizar la selección múltiple la carga asíncrona de tablas debe estar activa (consultar el blog dedicado a este tema). En segundo lugar, para activar la selección múltiple en una tabla debe activarse el indicador de Multiselección, en la parametrización de tablas de objetos. Además, debe informarse un código nemotécnico que identifique la tabla dentro del formulario, este código permite recuperar la selección realizada desde las funciones habilitadas para ello, que se verán más adelante.

Recuperar selección mediante Javascript

Recuperar la selección realizada sobre una tabla utilizando Javascript permite procesar dicha selección tanto desde un botón del formulario como en eventos de transacción o de campos.

Para ello se ha habilitado la función sqltableGetSelected(Código). La función recibe el código nemotécnico de la tabla y devuelve una lista con los registros seleccionados y los datos de cada registro en una estructura JSON.

var arr_selected = sqltableGetSelected("MYTABLE");

for(var idxRow=0; idxRow < arr_selected.length; idxRow++) {
    var code = arr_selected[idxRow].code;
}

Recuperar selección mediante XSQL-Script

Para recuperar la selección de la tabla desde un procedimiento XSQL-Script, ya sea desde el Transaction Manager o desde un botón del formulario, se ha habilitado el atributo prefix en la etiqueta request: <request prefix=’table_code />. De esta manera, dado el código nemotécnico de la tabla, esta función devuelve una tabla virtual con tantos registros como líneas seleccionadas y tantas columnas como tenga la tabla.

<xsql-script name='multiselect_sample'>
    <body>
        <vtable name='v_select'>
            <request prefix='TABLE_CODE' />
        </vtable>

        <foreach>
            <in prefix='m_'>
                <v_select />
            </in>
            <do>
                <!-- SOME CODE HERE -->
            </do>
        </foreach>
    </body>
</xsql-script>