Usuário com melhor resposta
Probleminha com Relacionamento de Listas no sharepoint 2007. E agora?

Pergunta
-
Olá,
Tenho um probleminha maneiro de ser resolvido.
Tenho duas listas. A lista Aluno e a lista Curso.
A lista Aluno possui um campo de consulta para a lista Curso.
A lista Curso possui as colunas ID e NomeCurso, e a lista Aluno possui os campos ID, NomeAluno e NomeCurso.
A coluna NomeCurso é do tipo consulta e está relacionado com o campo NomeCurso da lista Curso.
Até aí tudo bem.
O problema que estou tendo aqui é que não consigo pegar o ID do Curso da lista Curso através de seu relacionamento com a lista Aluno.
Isto é preciso por que posso ter mais de um curso com o mesmo nome (É isso mesmo).
Aí para poder diferenciá-los na lista Aluno preciso de um identificador.
Como faço para pegar o ID do Curso no meu relacionamento?
Tentei a seguinte estratégia:
Criei uma nova coluna na lista Aluno de nome IDCurso.
Criei então um workFlow para preencher esta coluna IDCurso com o valor do ID da lista Curso que tenha o mesmo nome de Curso escolhido no campo de consulta.
Isso funciona para cursos que não se repetem na lista curso.
Agora se existirem mais de um curso com o mesmo nome o workflow trás o primeiro ID da lista retornada. E isso não faz o que preciso, ou seja, trazer o id certo da lista.
Alguém sabe como posso fazer isto?
Obrigado
k2rto4-Pb - Analista SharePoint
Respostas
-
Olá Fabian,
Isso seria uma boa, assim os usuários saberiam qual Curso selecionar no campo consulta.
Complementado meu caso:
Tenhos as duas listas Aluno e Curso.
A lista Aluno teve seu DispForm customizado.
Agora o DispForm possui uma linha ao fim do form com um link para a lista Curso.
Este link leva consigo o parâmetro NomeCurso com ele. Ficou algo parecido com isto:
http://meuserver/sites/facul/Lists/Curso/AllItems.aspx?NomeCurso={NomeDoCurso}
Aí quando o usuário clica no link o mesmo vai para a página AllItems de curso.
Esta página da lista Curso está preparada para filtrar os valores de acordo com o nome do curso.
Isso funciona quando temos apenas cursos com um único nome.
Mas quando o nome do curso existe para mais de um curso, a visão não filtra corretamente o curso desejado.
Para resolver isto fiz a seguinte alteração:
1º No DispForm em vez de mandar o nome do curso mando agora o id do item da lista Aluno.
2º Na visão AllItems da lista Curso fiz:
2.1º Converti a visão em Exibição de Dados XSLT.
2.2º Alterei a tag SelectCommand da seguinte forma:
2.2.1º Adicionei LookupId='TRUE' <FieldRef Name ="MeuCampo"
2.2.2º Alterei o Type do valor do meu campo para Lookup
A query dentro da tag SelectCommand ficou parecida com isto:<Query> <Where> <Eq> <FieldRef Name ="MeuCampo" LookupId="true" /> <Value Type ="Lookup"> 1 </Value> </Eq> </Where> </Query>
Agora quando o usuário clica no link e o id do item da lista aluno é enviado, a visão exibe apenas os itens realmente RELACIONADOS com a lista aluno.
Assim resolvi meu problema.
Obrigado Fabian.
OBS.: Vou sugerir o complemente do nome do Curso aqui na empresa.
Abraçosk2rto4-Pb - Analista SharePoint
- Marcado como Resposta TI DEV segunda-feira, 18 de março de 2013 16:53
Todas as Respostas
-
K2rto4,
Uma forma mais simples de resolver isso eh colocar mais informacoes do curso no nome dele. Ao inves de chamar Curso de SharePoint, chame de Curso de SharePoint - Jan - 2013.
Ira facilitar a vida de td mundo e imagino que atenda ao requisito. Se nao conseguir aprovar isso, vc tera bastante trabalho.
Atenciosamente,
Fabian André Gehrke
MCITP e MCPD SharePoint 2010
http://fabiangehrke.com.br -
Olá Fabian,
Isso seria uma boa, assim os usuários saberiam qual Curso selecionar no campo consulta.
Complementado meu caso:
Tenhos as duas listas Aluno e Curso.
A lista Aluno teve seu DispForm customizado.
Agora o DispForm possui uma linha ao fim do form com um link para a lista Curso.
Este link leva consigo o parâmetro NomeCurso com ele. Ficou algo parecido com isto:
http://meuserver/sites/facul/Lists/Curso/AllItems.aspx?NomeCurso={NomeDoCurso}
Aí quando o usuário clica no link o mesmo vai para a página AllItems de curso.
Esta página da lista Curso está preparada para filtrar os valores de acordo com o nome do curso.
Isso funciona quando temos apenas cursos com um único nome.
Mas quando o nome do curso existe para mais de um curso, a visão não filtra corretamente o curso desejado.
Para resolver isto fiz a seguinte alteração:
1º No DispForm em vez de mandar o nome do curso mando agora o id do item da lista Aluno.
2º Na visão AllItems da lista Curso fiz:
2.1º Converti a visão em Exibição de Dados XSLT.
2.2º Alterei a tag SelectCommand da seguinte forma:
2.2.1º Adicionei LookupId='TRUE' <FieldRef Name ="MeuCampo"
2.2.2º Alterei o Type do valor do meu campo para Lookup
A query dentro da tag SelectCommand ficou parecida com isto:<Query> <Where> <Eq> <FieldRef Name ="MeuCampo" LookupId="true" /> <Value Type ="Lookup"> 1 </Value> </Eq> </Where> </Query>
Agora quando o usuário clica no link e o id do item da lista aluno é enviado, a visão exibe apenas os itens realmente RELACIONADOS com a lista aluno.
Assim resolvi meu problema.
Obrigado Fabian.
OBS.: Vou sugerir o complemente do nome do Curso aqui na empresa.
Abraçosk2rto4-Pb - Analista SharePoint
- Marcado como Resposta TI DEV segunda-feira, 18 de março de 2013 16:53