Ir al contenido
Otras versiones

Cargando…

Campo Suggestbox de parámetros

Esta es una implementación del típico componente AJAX de cuadro de sugerencias:

Atributo Descripción Obligatorio
label El texto mostrado como etiqueta en la interfaz de usuario. true
name Identificador único del campo.
Dos campos no pueden tener el mismo nombre en la misma definición de tarea. El nombre debe ser único.
true
table Nombre de la tabla de metadatos.
La aplicación puede almacenar valores en la tabla de metadatos, que pueden utilizarse en esta consulta.
true
width El ancho del elemento HTML. false
height El alto del elemento HTML. false
filterQuery Una consulta Hibernate para filtrar los datos. Utilice {0} para colocar el texto introducido por el usuario. true
valueQuery Una consulta Hibernate para obtener el valor de un identificador. Utilice {0} para colocar el identificador. true
filterMinLen El número mínimo de caracteres introducidos para empezar a filtrar los resultados. true
dialogTitle El título del diálogo HTML. true
  • Elementos hijos:

Los valores del suggestbox se definen en tablas de metadatos.

  • La aplicación utiliza dos tablas llamadas OKM_DB_METADATA_TYPE y OKM_DB_METADATA_VALUE que ayudan a almacenar los valores de las opciones utilizadas en los selects. Esto es muy útil cuando se dispone de un gran número de valores.
  • En la tabla OKM_DB_METADATA_TYPE se almacena la definición de la tabla de metadatos (nombre de la tabla, nombre de la columna y tipo de la columna).
  • En la tabla OKM_DB_METADATA_VALUE se almacenan los valores de los registros.

Cree la definición de la tabla de metadatos.

  • Vaya a Administration > Utilities > Database query.
  • En la parte inferior derecha, seleccione jdbc de la lista.
  • Pegue el SQL en el cuadro
DELETE FROM OKM_DB_METADATA_TYPE WHERE DMT_TABLE='country';
INSERT INTO OKM_DB_METADATA_TYPE (DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES ('country', 'col00', 'integer', 'country_id');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES ('country', 'col01', 'text', 'country_name');
  • Haga clic en la parte inferior derecha en el botón Execute.

Inserte los valores de la tabla de metadatos:

  • Vaya a Administration > Utilities > Database query.
  • En la parte inferior derecha, seleccione jdbc de la lista.
  • Pegue el SQL en el cuadro
DELETE FROM OKM_DB_METADATA_VALUE WHERE DMV_TABLE='country';
INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) VALUES ('country', '001', 'Australia');
INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) VALUES ('country', '002', 'Canada');
  • Haga clic en la parte inferior derecha en el botón Execute.

Por último, la definición XML:

  • En optionsQuery, los valores que empiezan por el carácter $ se identifican como nombres de columna. Véase $country_id y $country_name más abajo.
  • Pueden utilizarse cláusulas SQL normales como “lower”, “like”, “order by”, etc.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE report-parameters PUBLIC "-//OpenKM//DTD Report Parameters 2.1//EN"
"http://www.openkm.com/dtd/report-parameters-2.1.dtd">
<report-parameters>
<suggestbox label="country" name="suggestbox" width="200px"
table="country" dialogTitle="Choose country" filterMinLen="3"
filterQuery="select $country_id, $country_name from DatabaseMetadataValue dmv where dmv.table='country' and lower(dmv.$country_name) like '%{0}%' order by dmv.$country_name"
valueQuery="select $country_id, $country_name from DatabaseMetadataValue dmv where dmv.table='country' and dmv.$country_id='{0}'" />
</report-parameters>