Hoje me deparei com uma situação. Estamos desenvolvendo um tipo de um relatório e estamos usando o componente SPGridView (nativo do DLL do Sharepoint) e com esse componente é possivel agrupar por coluna. Então habilitamos o “AllowCollapseGroup” do SPGridView.
A questão é que, o relatório é extremamente extenso e todos os grupos são listados expandidos.
Como o relatório ficou bem extenso a visualização de todo ele ficou ruim, visto que pra enxergar o ultimo registro teria que rolar a página até o final, collapsar todos os grupos um a um… e por aí vai.
O componente SPGridView não tem uma propriedade pra marcar que faça com que os grupos apareçam collapsados por padrão mas para fazer isso acontecer, utilizamos o velho e bom JavaScript.
Utilizando o script abaixo, conseguimos fazer com que o evento de clique seja acionado assim que os dados do grid forem populados.
<script type="text/javascript"> var rows = document.getElementsByTagName('tr'); var numRows = rows.length; for (var i = 0; i < numRows; ++i) { if (rows[i].getAttribute("isexp") != null && rows[i].getAttribute("isexp").toLowerCase() == "true") { if(rows[i].firstChild.firstChild != null && rows[i].firstChild.firstChild.tagName.toLowerCase() == "a") { if (rows[i].firstChild.firstChild.title.toLowerCase() == "expand/collapse") { rows[i].firstChild.firstChild.fireEvent("onclick"); } } } } </script>
Se estiver usando WebUserControl, acrescente logo abaixo do componente se não estiver usando, faça executar este script logo depois de carregar o grid.
No caso de estar usando WSS/MOSS com o language pack em português, altere a linha:
if (rows[i].firstChild.firstChild.title.toLowerCase() == "expand/collapse")
Para a linha:
if (rows[i].firstChild.firstChild.title == "Expandir/Recolher")
Explicação: Existe uma função chamada “ToggleSPGridViewGroup” (que fica no arquivo “spgridview.js” na pasta Layouts) que é disparado sempre que clicado no ícone de expandir/recolher do grupo. Então, Robin Meuré pensou, “Porque não disparar esse evento em todos os grupos para que todos estejam recolhidos por default?”.
E foi assim que surgiu este script.
Thanks Robin for helping me!
Segue o link do blog dele de referencia. http://glorix.blogspot.com/2007/08/spgridview-and-collapsed-grouping-by.html

1 comment
Comments feed for this article
Junho 26, 2008 às 6:16 am
Robin
No problem mate