dataTable com numero de ROWS dinamico

744 views
Skip to first unread message

Fabrício Massula

unread,
Aug 9, 2011, 9:07:05 PM8/9/11
to jav...@googlegroups.com
Pessoal,

Preciso que minha dataTable exiba um numero X de linhas, em que o numero X seja o numero para com que a dataTable não passe da resolucao da tela do cliente. Ou seja, queria que minha dataTable nunca fosse responsável por gerar uma scroll vertical no browser do cliente.

A principio, eu coloquei:
 <p:dataTable  rows="#{patientListBean.linhas}" ...

Dentro do Bean, guardo esse valor de linhas na variável linhas. Até ai está OK.

Agora preciso, de dentro do Bean, descobrir a resolução da tela do cliente, e fazer alguma especie de divisão (isso eu ajusto depois) para obter o numero exato para a variável linhas de forma que a tabela ocupe a tela toda (verticalmente falando).

Esse seria o melhor caminho?
Como descubro a resolução da tela do cliente de dentro do Bean?

Obs.: Estou usando o Primefaces 2.2.1.

Mto obg.

Fabrício Massula

unread,
Aug 10, 2011, 3:55:24 PM8/10/11
to jav...@googlegroups.com
Alguma idéia?

Mto obg

2011/8/9 Fabrício Massula <fabr...@thau.com.br>

Matruskan

unread,
Aug 10, 2011, 4:05:24 PM8/10/11
to jav...@googlegroups.com
O que você quer é muito complexo...
Fica difícil definir os tamanhos pois cada navegador tem fontes de tamanhos diferentes.

Sei que a tabela do primefaces usa jQuery para realizar a paginação, então se você olhasse no fonte do primefaces talvez encontrasse algo para definir o número de linhas de acordo com o tamanho da tela, umas vez que é possível pegar o tamanho da tela com javascript.


2011/8/10 Fabrício Massula <fabr...@thau.com.br>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Eduardo Nobre

unread,
Aug 10, 2011, 4:44:33 PM8/10/11
to jav...@googlegroups.com
Caro,


Possível é, da seguinte forma:
1) Você carrega a pagina sem dados no datatable;
2) no xhtml onload  (javascript) da página voce pega o tamanho da tela com screen.width (javascript) e seta um inputhidden.value
3) no final do javascript voce invoca um remoteCommand do primefaces para carregar os dados do datatable.

* note que se o cara muda o tamanho da página não vai adiantar. Neste caso voce teria que detectar a mudança do tamanho da tela com um script e chamar o remoteCommand

2011/8/10 Fabrício Massula <fabr...@thau.com.br>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Eduardo Nobre

Eduardo Nobre

unread,
Aug 10, 2011, 4:46:30 PM8/10/11
to jav...@googlegroups.com
quanto a observação do colega Matruskan se 'resolve" colocando o tamanho da letra no css com em. (assim varia de acordo com o tamanho da tela).
--
Eduardo Nobre

Matruskan

unread,
Aug 10, 2011, 5:04:07 PM8/10/11
to jav...@googlegroups.com
O "em" do css não varia de acordo com o tamanho da tela.


2011/8/10 Eduardo Nobre <eduard...@gmail.com>

Eduardo Nobre

unread,
Aug 10, 2011, 5:13:44 PM8/10/11
to jav...@googlegroups.com
Matruskan como eu disse entre aspas.



concordo que seja uma pog.

Matruskan

unread,
Aug 10, 2011, 6:47:41 PM8/10/11
to jav...@googlegroups.com
Ah, entendi o que você quis dizer com "varia de acordo com o tamanho da tela".

Mas acho que isso não ajudaria na hora de contar quantas linhas cabem na tela... Tem como medir quantos pixels tem um "em" com javascript? Ou como medir quantos "em" tem a tela?



2011/8/10 Eduardo Nobre <eduard...@gmail.com>

Fabrício Massula

unread,
Aug 10, 2011, 7:05:35 PM8/10/11
to jav...@googlegroups.com
Caros,

Muito obrigado pelas respostas e esclarecimentos.
Vou elaborar o código e mando aqui de novo caso funcione.

Abc

Flavio Cysne

unread,
Aug 12, 2011, 8:23:09 AM8/12/11
to jav...@googlegroups.com
Fabrício,

    se a tabela poder ter scroll, você pode usar css p/ adicionar um scroll na tabela limitando o tamanho do tbody com um percentual do tamanho da tela. assim o corpo da tabela seria automaticamente redimensionado. Lembrando que isso pode causar alguns efeitos indesejados. Se a altura da tela for muito pequena o corpo da tabela simplesmente pode sumir.

[code]
.limit-height {
height: 23em;
min-height: 23em;
max-height: 23em;
overflow: auto;
}
[code]

    O que o pessoal falou sobre colocar a fonte com a unidade "em" é, em parte, verdade. A definição do tamanho da fonte em "em" garante que a proporção da fonte estará de acordo com a fonte usada pelo navegador. Para redimensionar proporcionalmente o tamanho da fonte de acordo com a resolução da tela do navegador eu sugiro dar uma olhada nos dois posts abaixo:


Espero ter ajudado.
Flávio Cysne

2011/8/10 Fabrício Massula <fabr...@thau.com.br>
Reply all
Reply to author
Forward
0 new messages