Alguém pode me dizer se é possível salvar a linha do gride abaixo no banco de dados ?
A idéia é que a cada escolha do usuário ( campo select - sim, não) seja disparado o evento “SalvarItem” e a respectiva linha do GRIDE seja atualizada na tabela correspondente.
$AntFam = TPDOConnection::executesql(' select * from tabela_etc e tal '); //
$gAF = new MeuGride('grideAntFam','Antecedentes familiares',$AntFam, null, null, 'ID_TABELA', 'ID_TABELA, COD_FAMILIA, CAMPOSIMNAO' );
$gAF->addColumn( 'id_tabela','ID',10,'left' );
$gAF->addColumn( 'cod_familia','Cod Familia',50,'left' );
$gAF->addSelectColumn('camposimnao','sim não',true, TabsimnaoDAO::SelectAll('DESCRICAOSIMNAO'), null, null,null,null,null,null,'')->addEvent('onChange','SalvarItem(this)');
function SalvarItem()
{
??????
}
Caso não seja possível, qual seria a melhor estratégia para salvar as possíveis alterações em cada linha do gride?
Desde já muito obrigado.
Autor: André Generino
33 comentários
// processar ação ajax
if( $_POST['formDinAcao'] == 'gravarSimNao')
{
// aqui voce deverá gravar os dados postados no banco de dados
echo 'Gravar no banco de dados:'.PHP_EOL;
echo 'id_tabela:'.$_POST['id_tabela'].PHP_EOL;
echo 'campossimnao:'.$_POST['sn'];
// criar o método abaixo no arquivo TabsimnaoDAO
//TabsimnaoDAO::atualizarSimNao($_POST['id_tabela'],$_POST['sn']);
//echo 'Dados Gravados com SUCESSO!';
sleep(1);
die; // fim da ação ajax
} $frm= new TForm('Exemplo Gravação Ajax',300,600);
$frm->addHtmlField('campo_gride');
$AntFam = null;
$AntFam['ID_TABELA'][] = 10;
$AntFam['COD_FAMILIA'][] ='F21';
$AntFam['CAMPOSIMNAO'][] ='S';
$AntFam['ID_TABELA'][] = 11;
$AntFam['COD_FAMILIA'][] ='F22';
$AntFam['CAMPOSIMNAO'][] ='N'; $gAF = new TGrid('grideAntFam','Antecedentes familiares',$AntFam, null, null, 'ID_TABELA', 'ID_TABELA, COD_FAMILIA, CAMPOSIMNAO' );
$gAF->addColumn( 'id_tabela','ID',10,'left' );
$gAF->addColumn( 'cod_familia','Cod Familia',50,'left' );
$gAF->addSelectColumn('camposimnao','sim não',true, array('S'=>'Sim','N'=>'Não'), null, null,null,null,null,null,'')->addEvent('onChange','SalvarItem()'); $frm->set('campo_gride',$gAF);
$frm->show();
?> <script>
function SalvarItem(e)
{
var simNao = e.value; // valor do campo select
var id_tabela = jQuery(e).attr('id_tabela'); // a classe TGride adiciona a chave do gride no elemento input como um atributo
fwAjaxRequest(
{
'action':'gravarSimNao', // ação que será executada pelo formulário
'data':{"sn":simNao,'id_tabela':id_tabela}, // campos que serão postados
'async':false, // bloquear a tela enquanto grava
'dataType':'text', // resposta será texto
'msgLoading':'Gravando. Aguarde...', // mensagem durante o processamento, se async for false
'module':null, // modulo que será que receberá a ação. o padrão é o módulo atual
'callback':function(resultado) // função callback que receberá o resultado do processamento
{
alert( resultado );
}
})
}
</script>