> ## 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.

# BDBRecursiveTreeView

> O `BDBRecursiveTreeView` é um componente (derivado da classe `BTreeView`) usado para criar uma visualização de árvore com dados carregados de forma recursiva a partir de um banco de dados.

*Obs.: todos os métodos presentes nesta documentação utilizarão como base uma tabela chamada "categorias\_produto". Esta tabela foi criada em um modelo de dados chamado "docs" e possui três colunas: id, nome, id\_pai.*

## \_\_construct

Construtor da classe `BDBRecursiveTreeView`.

**Parâmetros:**
<ResponseField name="$name" type="mixed" required>Nome do componente.</ResponseField>
<ResponseField name="$database" type="mixed" required>Banco de dados onde os dados estão armazenados.</ResponseField>
<ResponseField name="$model" type="mixed" required>Modelo dos dados.</ResponseField>
<ResponseField name="$key" type="mixed" required>Chave principal do modelo.</ResponseField>
<ResponseField name="$value" type="mixed" required>Valor a ser exibido.</ResponseField>
<ResponseField name="$recusive_column" type="mixed" required>Coluna para operações recursivas.</ResponseField>
<ResponseField name="$ordercolumn" type="mixed" default="NULL">(Opcional) Coluna de ordenação.</ResponseField>
<ResponseField name="$criteria" type="TCriteria" default="NULL">(Opcional) Critérios adicionais para carregamento dos dados.</ResponseField>

**Exemplo de código:**

```php theme={null}
$categoriasTreeView = new BDBRecursiveTreeView('categoriasTreeView', 'docs', 'CategoriasProduto', 'id', 'nome', 'id_pai');
$categoriasTreeView->enableCheck();
```

<br />

## getItemsFromModel

Obtém os itens do modelo para construção da árvore.

**Exemplo de código:**

```php theme={null}
$categoriasTreeView = new BDBRecursiveTreeView('categoriasTreeView', 'docs', 'CategoriasProduto', 'id', 'nome', 'id_pai');
$itens = $categoriasTreeView->getItemsFromModel();
```

<br />

## reloadFromModel

(Método estático) Recarrega a árvore a partir do modelo especificado.

**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 onde os dados estão armazenados.</ResponseField>
<ResponseField name="$model" type="mixed" required>Modelo dos dados.</ResponseField>
<ResponseField name="$key" type="mixed" required>Chave principal do modelo.</ResponseField>
<ResponseField name="$value" type="mixed" required>Valor a ser exibido.</ResponseField>
<ResponseField name="$recusive_column" type="mixed" required>Coluna para operações recursivas.</ResponseField>
<ResponseField name="$ordercolumn" type="mixed" default="NULL">(Opcional) Coluna de ordenação.</ResponseField>
<ResponseField name="$criteria" type="TCriteria" default="NULL">(Opcional) Critérios adicionais para carregamento dos dados.</ResponseField>
<ResponseField name="$options" type="array" default="[]">(Opcional) Opções adicionais.</ResponseField>

**Exemplo de código:**

```php theme={null}
$categoriasTreeView = new BDBRecursiveTreeView('categoriasTreeView', 'docs', 'CategoriasProduto', 'id', 'nome', 'id_pai');
$categoriasTreeView->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 function recarregarDados($param)
{
    $criterio = new TCriteria();
    $criterio->add(new TFilter('id_pai', '=', '3'));
    BDBRecursiveTreeView::reloadFromModel('nomeForm', 'categoriasReloadFromModel', 'docs', 'CategoriasProduto', 'id', 'nome', 'id_pai', 'id asc', $criterio);
}
```
