DD
Tcombo::reload não carrega no form através do setdata()
Pessoal, estou montando um combo através do evento onExit de um campo com static function, na função de processar eu consigo pegar os dados do combo com o getData(), mas não consegui colocar ele no form depois do reload, segue meu código:
function __construct()
{
parent::__construct();
$this->form = new TForm('form_name');
$this->form->class = 'tform'; // CSS class
$safras = new TDBCombo('safras', 'thedyagro','Safras','safra','safra');
$produtor_id = new TSeekButton('produtor_id');
$produtor_nome = new TEntry('produtor_nome');
$localidade_campo = new TCombo('localidade_campo');
$exit_produtor = new TAction(array($this, 'onExitProdutor'));
$produtor_id->setExitAction($exit_produtor);
...
}
public static function onExitProdutor($param)
{
if (isset($param['produtor_id']) AND trim($param['produtor_id']) <> '')
{
TTransaction::open('thedyagro');
$conn = TTransaction::get();
$safra = trim($param['safras']) <> '' ? "AND safra = '{$param['safras']}'" : '';
$sql = "SELECT safra, localidade, campo FROM sementes_safra WHERE produtor = {$param['produtor_id']} $safra ORDER BY id DESC; ";
$result = $conn->query( $sql );
$object = new StdClass;
$combo_safras = array();
$combo_safras[' '] = ' ';
foreach ($result as $row){
$combo_safras[$row['safra'].'|'.$row['localidade'].'|'.$row['campo']] = $row['safra'].' - '.$row['localidade'].' - '.$row['campo'];
}
TCombo::reload('form_name', 'localidade_campo', $combo_safras);
}
}
function onGenerate()
{
// get the form data into an active record Customer
$dados = $this->form->getData();
$this->form->setData( $dados ); // keep form data
$localcampo = trim($dados->localidade_campo) == '' ? '&localcampo=' : '&localcampo='.$dados->localidade_campo;
// aqui consigo pegar os valores do combo mas depois de executar esta função o combo perde o seu conteúdo
}
public function onReload($param)
{
$data = $this->form->getData();
$this->form->setData( $data );
$this->loaded = TRUE;
}
public function show()
{
// check if the datagrid is already loaded
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
{
$this->onReload( func_get_arg(0) );
}
parent::show();
}
function __construct()
{
parent::__construct();
$this->form = new TForm('form_name');
$this->form->class = 'tform'; // CSS class
$safras = new TDBCombo('safras', 'thedyagro','Safras','safra','safra');
$produtor_id = new TSeekButton('produtor_id');
$produtor_nome = new TEntry('produtor_nome');
$localidade_campo = new TCombo('localidade_campo');
$exit_produtor = new TAction(array($this, 'onExitProdutor'));
$produtor_id->setExitAction($exit_produtor);
...
}
public static function onExitProdutor($param)
{
if (isset($param['produtor_id']) AND trim($param['produtor_id']) <> '')
{
TTransaction::open('thedyagro');
$conn = TTransaction::get();
$safra = trim($param['safras']) <> '' ? "AND safra = '{$param['safras']}'" : '';
$sql = "SELECT safra, localidade, campo FROM sementes_safra WHERE produtor = {$param['produtor_id']} $safra ORDER BY id DESC; ";
$result = $conn->query( $sql );
$object = new StdClass;
$combo_safras = array();
$combo_safras[' '] = ' ';
foreach ($result as $row){
$combo_safras[$row['safra'].'|'.$row['localidade'].'|'.$row['campo']] = $row['safra'].' - '.$row['localidade'].' - '.$row['campo'];
}
TCombo::reload('form_name', 'localidade_campo', $combo_safras);
}
}
function onGenerate()
{
// get the form data into an active record Customer
$dados = $this->form->getData();
$this->form->setData( $dados ); // keep form data
$localcampo = trim($dados->localidade_campo) == '' ? '&localcampo=' : '&localcampo='.$dados->localidade_campo;
// aqui consigo pegar os valores do combo mas depois de executar esta função o combo perde o seu conteúdo
}
public function onReload($param)
{
$data = $this->form->getData();
$this->form->setData( $data );
$this->loaded = TRUE;
}
public function show()
{
// check if the datagrid is already loaded
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
{
$this->onReload( func_get_arg(0) );
}
parent::show();
}
Consegui resolver, não adiantou colocar a chamada para a função onExitProdutor() dentro do onReload, tive que colocar os comandos que montam o combo dentro da função onReload():