Boa Tarde Pessoal
Estou com dificuldade em recarregar uma div quando chamo uma função através do selectable do SQLFORM.grid
vou tentar explicar, tenho duas tabelas: Família de Produtos e Produtos,
carrego o controller: familia_produtos por LOAD
formProdutos = LOAD(c='cadastro', f='familia_produtos', content='Aguarde, carregando...',
target='familiaProdutos', ajax=True, args=idFamilia)
Nesse Controller tenho um botão que chama um Modal para selecionar e adicionar produtos para determinada família
def familia_produtos():
session.idFamilia = int(request.args(0))
btnAdicionar = A(SPAN(_class="glyphicon glyphicon-plus"),' Adicionar Produtos',_class="btn btn-default",_id='adcionar',
_onclick="show_modal('%s','%s');" %(URL(('cadastro','selecionar_produtos',vars={'reload_div':'map'}),' Adicionar Produtos'))
query = (Produtos.familia == session.idFamilia)
fields= [Produtos.codigo,Produtos.nome,Produtos.preco]
links = [lambda row: A('remover',_onclick="return confirm('Deseja Remover Produto ?');",callback=URL('cadastro', 'remove_produto', args=[
row.id]))]
formFamiliaProdutos = grid(query,orderby=Produtos.nome,args=[session.idFamilia],fields=fields,
create=False,editable=False,deletable = False,searchable=False,
links=links)
return dict(btnAdicionar=btnAdicionar,formFamiliaProdutos=formFamiliaProdutos)
No Modal mostro um SQLFORM.grid para selecionar produtos e chamo a função adiciona_produto através do botão do selectable
def selecionar_produtos():
fields = [Produtos.id,Produtos.nome]
selectable = [('Adcionar Produtos', adiciona_produto)]
formPesquisa = grid(Produtos,50,fields=fields,orderby=Produtos.nome,create=False,editable=False,
deletable=False,selectable=selectable)
return dict(formPesquisa=formPesquisa)
Após executar a função (adiciona_produto), não estou conseguindo fechar o Modal e fazer o reload na div #familiaProdutos com os produtos selecionados
def adiciona_produto(ids):
for idProduto in ids:
Produtos[idProduto] = dict(familia=session.idFamilia)
response.js = "hide_modal(%s);" %("'familiaProdutos'") ******* AQUI NÃO ESTÁ FUNCIONANDO *******
na view:
<script>
function hide_modal(target){
$('#janela-modal').modal('hide');
$("#" + target).get(0).reload();
};
</script>
No entanto a função remove_produto que é chamada por link está funcionando
def remove_produto():
idProduto = int(request.args(0))
Produtos[idProduto] = dict(familia=None)
response.js = "hide_modal(%s);" %("'familiaProdutos'") ******* AQUI FUNCIONA *******
Obs: grid() é um SQLFORM.grid default (seguindo dica do Carlos em posts anteriores)
Tentei
response.js = "jQuery('#familiaProdutos').get(0).reload()"
mas também não funcionou
com o redirect funciona, mas recarrega toda a página, gostaria de atualizar somente a div
redirect(request.env.http_web2py_component_location,client_side=True)
Ficou muito confuso, mas se alguém conseguiu entender
Obrigado
Adriano