Altura do Mestre Detalhe automático

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
5 Curtidas

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.

1 Curtida

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.

1 Curtida

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.

2 Curtidas

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

1 Curtida

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

1 Curtida

Funcionou perfeitamente! Muitíssimo obrigado pelas informações.

1 Curtida

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.

2 Curtidas

Vou me atentar há estes detalhes, muito obrigado pela contribuição.

Boa observancia colega…