> ## Documentation Index
> Fetch the complete documentation index at: https://docs-fw.madbuilder.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# BDBTreeView

> O `BDBTreeView` é um componente (derivado da classe `BTreeView`) especializado em construir uma árvore de visualização baseada em dados provenientes de um banco de dados.

*Obs.: todos os métodos presentes nesta documentação utilizarão como base uma tabela chamada "estado". Esta tabela foi criada em um modelo de dados chamado "docs" e possui quatro colunas: id, nome, sigla e regiao\_id, sendo a última uma chave estrangeira para uma tabela chamada "regiao", esta possuindo as colunas id e nome.*

## \_\_construct

Construtor da classe `BDBTreeView`.

**Parâmetros:**
<ResponseField name="$name" type="mixed" required>Nome do campo que será utilizado no formulário.</ResponseField>
<ResponseField name="$database" type="mixed" required>Nome do banco de dados.</ResponseField>
<ResponseField name="$model" type="mixed" required>Modelo dos dados.</ResponseField>
<ResponseField name="$key" type="mixed" required>Chave principal dos dados.</ResponseField>
<ResponseField name="$key_value" type="mixed" required>Valor associado à chave principal.</ResponseField>
<ResponseField name="$groups" type="mixed" default="[]">(Opcional) Grupos de dados.</ResponseField>
<ResponseField name="$ordercolumn" type="mixed" default="NULL">(Opcional) Coluna para ordenação dos dados.</ResponseField>
<ResponseField name="$criteria" type="TCriteria" default="NULL">(Opcional) Critérios para a busca de dados.</ResponseField>

**Exemplo de código:**

```php theme={null}
$estadosTreeView = new BDBTreeView('estadosTreeView', 'docs', 'Estado', 'id', '{nome} ({sigla})');
$estadosTreeView->setGroups(['{regiao->id}' => '{regiao->nome}']);
$estadosTreeView->enableCheck();
```

<br />

## addGroup

Adiciona um grupo à visualização da árvore.

**Parâmetros:**
<ResponseField name="$groupKey" type="mixed" required>Chave do grupo.</ResponseField>
<ResponseField name="$groupValue" type="mixed" required>Valor do grupo.</ResponseField>

**Exemplo de código:**

```php theme={null}
$estadosTreeView = new BDBTreeView('estadosTreeView', 'docs', 'Estado', 'id', '{nome} ({sigla})');
$estadosTreeView->addGroup('norte', 'Região Norte');
```

<br />

## setGroups

Define os grupos para a árvore.

**Parâmetros:**
<ResponseField name="$groups" type="mixed" required>Array de grupos.</ResponseField>

**Exemplo de código:**

```php theme={null}
$estadosTreeView = new BDBTreeView('estadosTreeView', 'docs', 'Estado', 'id', 'name');
$estadosTreeView->setGroups(['brasil' => 'Brasil', 'estados' => 'Estados']);
```

*Obs.: exemplo com grupos baseados em uma coluna de banco de dados presente na seção "\_\_construct()".*

<br />

## getGroups

Obtém os grupos atuais.

**Exemplo de código:**

```php theme={null}
$estadosTreeView = new BDBTreeView('estadosTreeView', 'docs', 'Estado', 'id', 'name');
$grupos = $estadosTreeView->getGroups();
```

<br />

## getItemsFromModel

Obtém os itens a partir do modelo definido.

**Exemplo de código:**

```php theme={null}
$estadosTreeView = new BDBTreeView('estadosTreeView', 'docs', 'Estado', 'id', 'name');
$itens = $estadosTreeView->getItemsFromModel();
```

<br />

## reloadFromModel

(Método estático) Recarrega os itens do modelo para o componente.

**Parâmetros:**
<ResponseField name="$formname" type="mixed" required>Nome do formulário.</ResponseField>
<ResponseField name="$name" type="mixed" required>Nome do componente.</ResponseField>
<ResponseField name="$database" type="mixed" required>Banco de dados.</ResponseField>
<ResponseField name="$model" type="mixed" required>Modelo dos dados.</ResponseField>
<ResponseField name="$key" type="mixed" required>Chave dos dados.</ResponseField>
<ResponseField name="$key_value" type="mixed" required>Valor da chave.</ResponseField>
<ResponseField name="$groups" type="array" default="[]">(Opcional) Grupos.</ResponseField>
<ResponseField name="$ordercolumn" type="mixed" default="NULL">(Opcional) Coluna de ordenação.</ResponseField>
<ResponseField name="$criteria" type="TCriteria" default="NULL">(Opcional) Critérios para seleção.</ResponseField>
<ResponseField name="$options" type="array" default="[]">(Opcional) Opções adicionais.</ResponseField>

**Exemplo de código:**

```php theme={null}
$estadosTreeView = new BDBTreeView('estadosTreeView', 'docs', 'Estado', 'id', '{nome}');
$estadosTreeView->setGroups(['{regiao->id}' => '{regiao->nome}']);
$estadosTreeView->enableCheck();
        
$btnRecarregar = new TButton('btnReloadFromModel');
$btnRecarregar->addStyleClass('btn-default');
$btnRecarregar->setImage('far:circle #000000');
$btnRecarregar->setAction(new TAction([$this, 'recarregarDados']), 'Recarregar Itens do Modelo');
```

Código de exemplo da função a ser chamada, lembrando que essa função precisa ser estática (static function):

```php theme={null}
public static function recarregarDados($param = null)
{
    $criterio = new TCriteria();
    $criterio->add(new TFilter('regiao', '=', 'Sudeste'));
    BDBTreeView::reloadFromModel('nomeForm', 'estadosTreeView', 'docs', 'Estado', 'id', '{nome} ({sigla})', null, $criterio);
}
```
