WSS 3.0 - Listas Aninhadas & Sharepoint Designer
Hoje tive necessidade de “martelar” um pouco o site baseado em Windows Sharepoint Services 3.0 da empresa onde trabalho. A ideia era dada uma lista pai (lista de projectos) ter um link (na última coluna da lista) que apontasse para a lista de filhos (tarefas de projectos).
Tinha portanto 2 listas independentes, em que na lista de tarefas, havia um campo Projecto que referenciava elementos da lista de projectos. Ao escolher um dado projecto é mostrada a lista de tarefas respectivas (através de um filtro).
Replicando o cenário, temos a lista Parent List, que apenas contém os títulos.
A segunda lista chamada Child List, contém o seu título, e o pai associado. No post anterior relacionado com Sharepoint deixei detalhes sobre como criar listas personalizadas.
Dada a lista abaixo, deve ser possível aplicar um filtro que nos dá apenas os elementos relacionados com o Parent 1 ou com o Parent 2.
De forma a conseguir colocar na lista pai um link que aplica este filtro, utilizei o Microsoft Office Sharepoint Designer 2007, que permite personalizar as páginas/sites criados o WSS. A interface é semelhante ao defunto Front Page (reencarnado Microsoft Expression Web). Basta clicar no menu File > Open Web Site, e escolher o site pretendido (pelo url http://blahblah.blah). Será necessário proceder à autenticação como administrador do site.
Uma vez aberto o site, é possível escolher a página a editar no Folder List, que é apresentado à esquerda. Neste caso vamos editar a lista Parent List que se encontra na pasta Lists. O ficheiro a editar é o AllItems.aspx, que corresponde à vista pré-definida, criada no momento de criação da lista. É apresentada para edição a página, com aspecto semelhante à visualizada no browser.
Neste caso, de forma a personalizar a vista, temos de converter o ListViewWebPart (no fundo, o componente de listagem da vista) para uma vista XSLT, através do menu contextual.
Agora que temos uma tabela em HTML com os campos definidos em XML (mais propriamente como uma transformação XSLT), podemos adicionar uma coluna à tabela, como faríamos no FrontPage.
(menu contextual > Table Properties, aumentar o valor do campo Columns para 3)
Com a nova coluna criada, escreve-se o texto pretendido para a hiperligação na linha de template do registo (pode-se editar a 1ª linha, que as seguintes reproduzirão a edição), e adiciona-se uma hiperligação sobre o texto introduzido na célula. Esta hiperligação será um link para a página de listagem da Child List, com os parâmetros correctos para a filtragem.
O URL terá o formato /Lists/<nome-lista>/AllItems.aspx?FilterField=<campo>&Value={@Title}.
O parâmetro Value cujo valor é {@Title} ficará ligado ao campo Title da lista Parent List, assumindo o valor do mesmo em cada registo mostrado na listagem.
Mais detalhes sobre a filtragem e ordenação de registos através do URL podem ser encontrados nesta página do site Microsoft TechNet.
Uma vez feitas as alterações descritas, pode-se salvar a página, confirmando esta decisão na caixa de diálogo seguinte.
A partir de agora, na página de listagem da Parent List aparece uma segunda coluna com a hiperligação para a Child List, com o respectivo filtro aplicado.
Estes são os passos base para criar uma hierarquia de listas no Sharepoint, o que será certamente muito útil em diversos contextos.












