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

# TDBCheckGroup

> O `TDBCheckGroup` é um componente que estende o `TCheckGroup` para gerar grupos de caixas de seleção vinculados a fontes de dados do banco de dados.

Derivado da classe `TCheckGroup`, métodos herdados não sobrescritos podem também ser utililzados por objetos `TDBCheckGroup`. Acesse a [documentação do componente/classe-pai](https://madbuilder.mintlify.app/selecao-de-dados-fixos/tcheckgroup) para conhecê-los.

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

## \_\_construct

Construtor da classe `TDBCheckGroup`.

**Parâmetros:**
<ResponseField name="$name" type="mixed" required>Nome do widget.</ResponseField>
<ResponseField name="$database" type="mixed" required>Nome do banco de dados.</ResponseField>
<ResponseField name="$model" type="mixed" required>Nome da classe do modelo.</ResponseField>
<ResponseField name="$key" type="mixed" required>Campo da tabela usado como chave.</ResponseField>
<ResponseField name="$value" type="mixed" required>Campo da tabela a ser listado.</ResponseField>
<ResponseField name="$ordercolumn" type="mixed" default="NULL">(Opcional) Coluna para ordenação dos campos.</ResponseField>
<ResponseField name="$criteria" type="TCriteria" default="NULL">(Opcional) Critérios (objeto TCriteria) para filtrar o modelo.</ResponseField>

**Exemplo de código:**

```php theme={null}
$selecaoProduto = new TDBCheckGroup('selecaoProduto', 'docs', 'Produto', 'id', '{nome}, R$ {preco}');
$selecaoProduto->setSize(180);
$selecaoProduto->setLayout('vertical');
```

**Exemplo de código (com parâmetros opcionais):**

```php theme={null}
$criterio = new TCriteria();
$criterio->add(new TFilter('preco', '<', 5)); // Filtrar por itens da tabela cujo preço seja menor que 5

$selecaoProduto = new TDBCheckGroup('selecaoProduto', 'docs', 'Produto', 'id', '{nome}, R$ {preco}', 'id asc', $criterio);
$selecaoProduto->setSize(180);
$selecaoProduto->setLayout('vertical');
```

<br />

## reloadFromModel

(Método estático) Recarrega o checkbox a partir dos dados do modelo.

**Parâmetros:**
<ResponseField name="$formname" type="mixed" required>Nome do formulário.</ResponseField>
<ResponseField name="$field" type="mixed" required>Nome do campo.</ResponseField>
<ResponseField name="$database" type="mixed" required>Nome do banco de dados.</ResponseField>
<ResponseField name="$model" type="mixed" required>Nome da classe do modelo.</ResponseField>
<ResponseField name="$key" type="mixed" required>Campo da tabela usado como chave no checkbox.</ResponseField>
<ResponseField name="$value" type="mixed" required>Campo da tabela a ser listado no checkbox.</ResponseField>
<ResponseField name="$ordercolumn" type="mixed" default="NULL">(Opcional) Coluna para ordenação dos campos.</ResponseField>
<ResponseField name="$criteria" type="TCriteria" default="NULL">(Opcional) Critérios (objeto `TCriteria`) para filtrar o modelo.</ResponseField>
<ResponseField name="$options" type="array" default="[]">(Opcional) Array de opções \[layout, breakItems, useButton, value, valueSeparator, changeAction, changeFunction].</ResponseField>

**Exemplo de código:**

```php theme={null}
$selecaoProduto = new TDBCheckGroup('selecaoProduto', 'docs', 'Produto', 'id', '{nome}, R$ {preco}', 'id asc');
$selecaoProduto->setSize(180);
$selecaoProduto->setLayout('vertical');

$btnRecarregar = new TButton('btnRecarregar');
$btnRecarregar->addStyleClass('btn-default');
$btnRecarregar->setImage('far:circle #000000');
$btnRecarregar->setAction(new TAction([$this, 'recarregarDados']), 'Recarregar Dados');
```

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)
{
    TDBCheckGroup::reloadFromModel('nomeForm', 'selecaoProduto', 'docs', 'Produto', 'id', '{nome}, R$ {preco}', 'preco asc', null, ['changeFunction' => 'alert("Seleção alterada com sucesso!");']);
}
```
