Indice

Componenti dinamici

All'interno della libreria cwbLibHtml sono presenti dei metodi per la generazione di componenti dinamici a run-time.

Pulsanti dinamici nella buttonbar

Metodo: pulsantiDinamiciButtonBar($formName, $divName, $pulsanti)

Parametri:

Ogni pulsante è rappresentato da un array associativo, con le seguenti chiavi:

Esempio di utilizzo:

cwbLibHtml::pulsantiDinamiciButtonBar($this->nameForm, 'divPulsantiDinamici', array(
	array(
		'id' => 'btnDinamico1',
		'icon' => 'ui-icon-search',
		'newline' => 1,
		'properties' => array(
			'style' => 'width:140px;',
			'value' => 'Pulsante 1',
		)
	),
	array(
		'id' => 'btnDinamico2',
		'icon' => 'ui-icon-search',
		'newline' => 1,
		'properties' => array(
			'style' => 'width:140px;',
			'value' => 'Pulsante 2',
		)
	),
));

Componenti dinamici Su Grid

Metodo: addGridComponent($formName, $components)

Parametri:

Componenti attualmente gestiti:

ita-edit

L'array $components deve contenere:

ita-edit-date

L'array $components deve contenere:

ita-select

L'array $components deve contenere:

Componenti dinamici Su Pagine

Metodo: componentiDinamici($formName, $divName, $components)

Parametri:

Componenti attualmente gestiti:

div

E' un componente che contiene al suo interno altri componenti.

ita-button

ita-edit

ita-edit-lookup

ita-readonly

ita-checkbox

ita-select

label

ita-select option

Esempio di utilizzo:

private function componentiDinamici() {
	$componenti = array(
		array(
			'type' => 'div',
			'id' => 'divInfoAggiuntive',
			'children' => array(
				array(
					'type' => 'ita-edit',
					'id' => 'txtDemo1',
					'newline' => 1,
					'properties' => array(
						'maxlength' => 10,
						'size' => 7,
						'style' => 'text-align:right;'
					),
					'label' => array(
						'text' => 'label comp. 1',
						'position' => 'sx',
						'style' => 'width:120px;'
					)
				),
				array(
					'type' => 'ita-edit',
					'id' => 'txtDemo2',
					'newline' => 1,
					'properties' => array(
						'maxlength' => 20,
						'size' => 14,
						'style' => 'text-align:left;'
					),
					'label' => array(
						'text' => 'label comp. 2',
						'position' => 'sx',
						'style' => 'width:120px;'
					)
				),
				array(
					'type' => 'ita-edit-lookup',
					'id' => 'txtLookup1',
					'newline' => 0,
					'size' => 200,
					'properties' => array(
						'maxlength' => 2,
						'size' => 5,                            
						'style' => 'text-align:right;'
					),
					'label' => array(
						'text' => 'label lookup',
						'position' => 'sx',
						'style' => 'width:120px;'
					)
				),
				array(
					'type' => 'ita-readonly',
					'id' => 'txtLookup1_decod',
					'newline' => 1,
					'properties' => array(                            
						'size' => 50
					)
				),
				array(
					'type' => 'ita-checkbox',
					'id' => 'txtCheckTest',
					'newline' => 1,
					'label' => array(
						'text' => 'label check',
						'position' => 'sx',
						'style' => 'width:120px;'
					)
				),
				array(
					'type' => 'ita-select',
					'id' => 'txtSelect1',
					'newline' => 1,
					'label' => array(
						'text' => 'label select',
						'position' => 'sx',
						'style' => 'width:120px;'
					),
					'options' => array(
						array(
							'id' => '01',
							'value' => 'EUROPA',
							'selected' => 1
						),
						array(
							'id' => '02',
							'value' => 'ASIA'                                
						)
					)
				),
				array(
					'type' => 'ita-button',
					'id' => 'btnSub1',
					'icon' => 'ui-icon-search',                        
					'newline' => 1,
					'properties' => array(
						'style' => 'width:140px;',
						'value' => 'Pulsante 1',
					)
				),
			)
		)
	);
	
	cwbLibHtml::componentiDinamici($this->nameForm, "divCampiDinamici", $componenti);
}

Aggiunta di una subform

Per includere dinamicamente un model (disegnato con il generator) all'interno di un div, utilizzare il metodo: includiFinestra($src, $dest, $containerName)

Parametri:

In questo caso la finestra inclusa sarà vista come un'estensione della finestra ospitante, e tutti gli eventi della finestra inclusa saranno gestiti da quest'ultima.

Esempio:

cwbLibHtml::includiFinestra('cwbBtaNazion', $this->nameForm, 'divContainer');

Aggiunta di componenti all'interno di una jqGrid

Per aggiungere dei componenti all'interno di una jqGrid, devono verificarsi innanzitutto le seguenti condizioni:

Il funzionamento è il seguente:

Metodo: addGridComponent

Parametri:

Questo metodo funge da wrapper per i componenti specifici, ad esempio, per 'ita-select', viene chiamato il seguente metodo: addGridComponentItaSelect

Parametri:

All'evento 'change', vengono restituiti i seguenti valori nella $_POST:

Inoltre, verranno passati tutti i valori previsti in 'additionalData' (direttamente nella $_POST).

Esempio di utilizzo (all'interno di un metodo di elaborazione del record):

private function elaboraRecordsTest($Result_tab) {
	$numRiga = 0;
	foreach ($Result_tab as $key => $Result_rec) {
		$numRiga++;
		$html = cwbLibHtml::addGridComponent(array(
			'type' => 'ita-select',
			'model' => $this->nameForm,
			'name' => 'selectIndirizzo',
			'rowKey' => $Result_tab[$key]['ID'],
			'options' => array(
				array(
					'id' => 1,
					'value' => 'vai milano 1, Jesi(AN)'
				),
				array(
					'id' => 2,
					'value' => 'vai ascoli piceno 2, Apiro(MC)'
				)
			),
			'additionalData' => array(
				'numRiga' => $numRiga
			)
		));
		
		$Result_tab[$key]['INDIRIZZO'] = $html;            
	}
	return $Result_tab;        
}

Note

E' necessario dopo aver creato a runtime dei componenti particolari (date-picker , ita-button ecc) associare tramite la funzione “parseHtmlContainer” lo script js per far funzionare il componente. Ad esempio se creo una griglia editabile da codice è necessario per far funzionare tutti i sui elementi (date-picker, formatter del data-edit ecc, binocoli per lookup esterni )lanciare la function sul componente padre che poi si occuperà di propagare tale comportamento ai figli.

cwbLibHtml::attivaJSElemento($this->nameForm . '_' . [TABLENAME]);