Olá,
Gostaria de saber se existe alguma solução em que eu possa deixar o formulário de um mestre detalhe com altura automática de acordo com a quantidade do conteúdo disposto no mesmo. O meu mestre-detalhe é um formulário de grid editável em que vou adicionando linhas de acordo com a necessidade e quando acrescento mais de 3 linhas é gerado uma barra de rolagem que para que eu visualize todo do conteúdo do form de detalhe, só que eu não quero que tenha barra de rolagem e sim que seja aplicada a altura desse iframe de forma automática e que seu conteúdo fique totalmente visível para o usuário.
Espero ter explicado de forma clara a minha duvida.
Oi, podes usar esse código:
<!-- NO ELEMENTO PAI - EVENTO ONSCRIPTINI -->
<script>
function heightIframe(altura, id) {
$("#"+id).css("height", altura+"px");
}
</script>
<!-- NO ELEMENTO FILHO - EVENTO ONSCRIPTINI -->
?>
<script>
window.onload = function(){
setInterval(function () {
var altura = document.getElementById("main_table_form").scrollHeight + 50;
window.parent.heightIframe(altura, "nmsc_iframe_liga_form_client_hours");
}, 100);
}
</script>
<?php
Porque não acionar window.parent.heightIframe(… ao clicar no botão novo antes de abrir um novo registro no detalhe?
É só criar um botão do tipo javascript acionar o método sugerido pela colega e em seguida adicionar o código de nova linha (basta inpecionar o botão novo par apegar o cõdigo).
Usar um temporizador para esse caso vale a pena? Esse temporizador ficará de forma intermitente acionando a função, mesmo não inserindo novos registros.
Vale lembrar que terá que calcular a altura pela quantidade de registros já inseridos no detalhe + 1.
Lembrando também, que, na carga incial do formulário detalhe terá que acionar o método para que esse abra já no tamanho do iframe total.
Me desculpe a desinformação mais eu só não consegui entender os termos ‘main_table_form’ na var altura e “nmsc_iframe_liga_form_client_hours” no window.parent, estes termos se referem a aplicação, atributos específicos do código ou são termos padrão do Scriptcase. Desde já gradeço a disponibilidade em me ajudar.
Gleison, bom dia! Uso esse código da @camilamoreira e funciona perfeitamente. O termo main_table_form refere-se ao id da aplicação. Quando form, é esse nome, grid, é main_table_grid, controle, usa-se main_table_form também e por ai vai. Quanto ao "nmsc_iframe… " é o id do iframe onde vc vai inserir a altura automática. Pra vc saber qual é o nome, deve inspecionar elementos e encontrar o seu iframe e pegar o id dele.
Espero ter ajudado!
Em tempo…
Não precisa se desculpar. Estamos aqui aprendendo diariamente.
Seu formulário detalhe está sem paginação?
Porque não pagina o formulário e exibe de 15 em 15 linhas por exemplo?
E deixa a altura do iframe para apresentação das 15 linhas?
Fico imaginando um detalhe com 200, 300 linhas de registros, como seria a altura desse iframe…
Se tiver com paginação total, troque para paginação parcial com 10 ou 15 linhas por página.
A sugestao da colega funciona, sim, mas eu particularmente não usario um temporizador.
Já é que novato na ferramenta, tente começar seu projeto usando o padrão da ferramenta.
Otra opçao e DataGrid.class.php feito por o colega Haroldo Pasos e sair do “chato” mestre detalles
@sistemax, sim é como utilizo hoje, mas necessita de mais conhecimento em Scriptcase e conhecimento avançado, em php, html, js, jquery, css…
Como o solicitante esta iniciando agora no SC, pois é seu primeiro post , eu sugiro não sair do padrao do SC.
Funcionou perfeitamente! Muitíssimo obrigado pelas informações.
Quero mais uma vez agradecer e expressar aqui a minha admiração a você @camilamoreira pelo trabalho que faz pela comunidade, tenho aprendido muito com seus conteúdos no Youtube, Parabéns.
Vou me atentar há estes detalhes, muito obrigado pela contribuição.
Boa observancia colega…