none
Recuperar Item de lista pelo Guid RRS feed

  • Pergunta

  • Olá galera!
    estou tentando recuperar um item de lista, e para identifica-lo tenho o seu guid.

    ja tentei usar o método 

    SPListItem listItem = list.GetItemByUniqueId(guid);

    mas isso me retorna o seguinte erro:

    value does not fall within the expected range.

    alguem pode me ajudar  a recuperar esse item pelo seu guid?

    sexta-feira, 3 de maio de 2013 13:12

Respostas

  • A melhor solução que vejo é alterar o workflow como eu falei, mas vc tem q fazer e testar. Sem alterar o fluxo não vejo forma simples.

    Segue novamente o texto anterior:

    Vc está usando a tarefa "Iniciar Processo de Aprovação"? Se sim, você pode customizar este processo (subfluxo) e no comportamento da tarefa, na seção "Quando uma Tarefa está Pendente", crie uma variável no workflow para  armazenar o ID (ou GUID no seu caso) do item atual, que no caso seria a própria tarefa. Depois no email deste mesmo processo envie a variável e veja se o valor dela foi o correto. Não testei aqui, mas pode ser viável.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 21:15
    Moderador

Todas as Respostas

  • Poderia informar por favor o trecho de código que está utilizando?
    sábado, 4 de maio de 2013 16:31
  • David,

    Pela mensagem o item nao existe. Como q vc esta obtendo este GUID e pq esta fazendo via GUID e nao via ID?


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    sábado, 4 de maio de 2013 22:56
    Moderador
  • Estou tentando recuperar uma Task de um Workflow, para isso estou passando seu Guid pela URL.

    Já comparei o Guid que vem pela URL com o Guid do item, e são os mesmos.

    Acho mais seguro passar um Guid pela URL do que passar seu ID.

    segunda-feira, 6 de maio de 2013 12:19
  • ja foste a lixeira? talvez esteja la.

    e tambem valida na lixeira do Site.


    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/

    segunda-feira, 6 de maio de 2013 12:48
    Moderador
  • Não entendi André, porque deveria procurar na lixeira? qual a relação do item na lista de tarefas com a lixeira ?
    segunda-feira, 6 de maio de 2013 13:10
  • Talvez tenha nao tenha entendido o pedido,

    Atraves das respostas eu entendo que essa tarefa foi apagada, esta correcto?

    Se sim, talvez podera encontrar a task no recycling bin, ou esta a procurar da task na workflow history list?


    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/

    segunda-feira, 6 de maio de 2013 14:39
    Moderador
  • Não, essa tarefa acabou de ser criada e estou enviando um link de um formulário de aprovação personalizado com o Guid da tarefa para que possa ser aprovado por lá. por exemplo:

    http://local/form.aspx?task=d598dd73-281a-45f5-93f4-603bb34b6b5c

    quando eu tento buscar esse item por seu Guid (sim eu já comparei e essa é o mesmo Guid da tarefa) utilizando o seguinte método:

    SPListItem listItem = list.GetItemByUniqueId(guid);

    Obs: "guid" é um Guid criado a partir da quarystring.

    é retornado o seguinte erro: value does not fall within the expected range.

    o que eu preciso é recuperar essa Task por sua Guid e não está dando certo, se alguem tiver outro modo de recuperar que de certo, eu agradeceria muito!

    segunda-feira, 6 de maio de 2013 15:05
  • eu também tenho o ID do item relacionado a Task, é possível recuperar a Task pelo ID do item?
    segunda-feira, 6 de maio de 2013 20:45
  • var id = 3

    SPListItem listItem = GetItemById(id);


    segunda-feira, 6 de maio de 2013 21:41
  • P.Marques, eu sei recuperar esse item o que eu queria saber é se é possível recuperar as tasks relacionadas a esse item de alguma forma.
    terça-feira, 7 de maio de 2013 17:24
  • David,

    Estou tentando adivinhar o que vc está fazendo, para assim tentar achar uma solução que sirva. Você fez um formulário de biblioteca de formulários ao invés de customizar o formulario padrao da lista de tarefas? Se foi isso, o que vc precisou fazer que o formulário de lista não atendeu. Se não, o que foi?

    Desculpe perguntar algo fora da sua dúvida, mas é pq o comportamento normal das tarefas é já ter a tarefa que está sendo aberta, não sendo necessária carregá-la via código.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 17:39
    Moderador
  • Ok, eu estou desenvolvendo uma Web Part que tem o evento de aprovar uma tarefa.
    Já consegui fazer essa aprovação ta tudo certo(setando o ID da tarefa na mão), só que o único identificador para essa tarefa que eu consegui passar foi o ID da Instância, ou seja seu Guid (também tenho o ID do Item relacionado).

    A minha única dificuldade está em pegar essa tarefa, e não estou conseguindo recupera-la com o Guid.

    terça-feira, 7 de maio de 2013 18:19
  • David,

    Desculpe mas prefiro entender o que está acontecendo antes de dar qualquer sugestão. Sou da ideia que as vezes posso ser mais útil ajudando de verdade do que apenas dando uma resposta.

    Se quiser discutir sobre a solução, envie mais detalhes. Porque ainda não entendi o motive de vc ter criado uma web part customizada para aprovar as tarefas. Sou da ideia que quanto mais recursos nativos do SharePoint vc utilizer melhor, mas claro em algumas vezes vou precisar fazer algumas customizações. Que recurso exatamente a sua web part faz que um formulãrio InfoPath não faz? Está usando SharePoint Enterprise?


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 18:44
    Moderador
  • Sim estou usando o Sharepoint Enterprise. Nessa minha Web Part os usuários atualizam o item e aprovam ou rejeitam a tarefa ao mesmo tempo. Fiz isso também pra tirar a permissão de alterar qualquer item diretamente nas listas, assim só é possível aprovar uma tarefa atribuída a esse usuário e alterar o item relacionado por essa Web Part.

    Faltou algum detalhe?
    terça-feira, 7 de maio de 2013 19:22
  • Legal, já é um começo.

    A sua webpart exibe o próprio item que está executando o workflow, certo? Aí nessa tela vc vai mostrar o botão da tarefa diretamente e fazer ela ser aprovada programaticamente ou o usuário vai clicar nela e abrir? Como vc está pegando a instãncia do workflow que está rodando?


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 19:29
    Moderador
  • isso, o usuário faz a aprovação pelo botão programaticamente.

    eu construí esse workflow no Sharepoint Designer entao no momento da atribuição o Sharepoint envia um e-mail,  nesse e-mail eu coloquei a URL da pagina que contem a Web Part com o parâmetro "ID da Instância", ou seja, o Guid está sendo enviado como parâmetro.


    terça-feira, 7 de maio de 2013 19:36
  • Vc está recebendo o Guid ad Instância do workflow ou Guid da Tarefa? Porque vc não passa o ID do Item e o da Tarefa ao invés da instância do workflow?


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 19:39
    Moderador
  • estou recebendo o Guid da task. Pois é, não tem o ID da tarefa pra poder passar, apenas o ID do Item relacionado. Além disso acho mais seguro passar um código hexadecimal do que um numero que pode ser mudado facilmente. Bom mas a essa altura se eu achasse pelo menos o ID da tarefa já estava de bom tamanho ^^
    terça-feira, 7 de maio de 2013 19:48
  • Como q vc está passando o GUID para o email? Está pegando de qual objeto e propriedade?

    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 20:02
    Moderador
  • Vc está usando a tarefa "Iniciar Processo de Aprovação"? Se sim, você pode customizar este processo (subfluxo) e no comportamento da tarefa, na seção "Quando uma Tarefa está Pendente", crie uma variável no workflow para  armazenar o ID (ou GUID no seu caso) do item atual, que no caso seria a própria tarefa.

    Depois no email deste mesmo processo envie a variável e veja se o valor dela foi o correto.

    Não testei aqui, mas pode ser viável.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 20:09
    Moderador
  • Tudo bem, mas a minha duvida é como recuperar um item por seu Guid, ja vi um monte  de formas na internet mas nenhuma deu certo, e o método:

    SPListItem listItem = list.GetItemByUniqueId(guid);

    retorna:value does not fall within the expected range.

    sendo que eu estou passando um Guid como parâmetro.


    terça-feira, 7 de maio de 2013 20:22
  • Aparentemente vc está pegando o GUID errado, por isso está dando a mensagem que ele não existe.

    Viu as perguntas que fiz? Acredito que respondendo a elas poderemos ter mais luz no fim do túnel. Olhei rapidamente e não encontrei o GUID da tarefa que está sendo criada, por isso quero saber como vc fez. Pq se pegou do contexto o GUID é o da instância.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 20:25
    Moderador
  • "Contexto do Fluxo de Trabalho:ID da Instância" esse mesmo parâmetro que está sendo enviado é o mesmo guid da tarefa, eu comparei isso. E estou utilizando "Atribuir uma tarefa".
    terça-feira, 7 de maio de 2013 20:33
  • Não sei como vc comparou, não fiz isso para comprovar, mas está estranho. Imagina que um workflow pode ter várias tarefas, para cada uma ele vai gerar um GUID diferente. Como que pode ter ficado igual ao da instância? Ou melhor, como vc irá pegar o GUID das tarefas seguintes do Workflow? Se o que vc disse está correto, irá funcionar apenas para a primeira tarefa, mas verifique bem.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 20:40
    Moderador
  • Pra cada tarefa é criada uma instancia nova, tanto é q eu não posso simplesmente copiar uma variável de um e-mail e colar em outro, eu tenho que inserir novamente.
    terça-feira, 7 de maio de 2013 20:44
  • Como vc está testando que é um novo GUID cada vez? Está executando 1 workflow com várias tarefas, aí vc confere? Ou está executando vários workflows com 1 tarefa e aí conferindo?

    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 20:51
    Moderador
  • um workflow com várias tarefas a cada aprovação eu vejo a URL enviada e comparo na URL da tarefa(item da lista de tarefas) e são as mesmas
    terça-feira, 7 de maio de 2013 21:02
  • Manda a url aqui, por favor. Pode ser de 2 tarefas.

    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 21:05
    Moderador
  • agora eu reparei que o "Guid" é o mesmo pra duas tarefas ¬¬'
    qual vai ser entao o parâmetro para identificar a task?! fiquei sem opções agora.

    terça-feira, 7 de maio de 2013 21:12
  • A melhor solução que vejo é alterar o workflow como eu falei, mas vc tem q fazer e testar. Sem alterar o fluxo não vejo forma simples.

    Segue novamente o texto anterior:

    Vc está usando a tarefa "Iniciar Processo de Aprovação"? Se sim, você pode customizar este processo (subfluxo) e no comportamento da tarefa, na seção "Quando uma Tarefa está Pendente", crie uma variável no workflow para  armazenar o ID (ou GUID no seu caso) do item atual, que no caso seria a própria tarefa. Depois no email deste mesmo processo envie a variável e veja se o valor dela foi o correto. Não testei aqui, mas pode ser viável.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 21:15
    Moderador
  • David,

    Como o problema reportado foi resolvido, estou encerrando esta thread.

    Se tiver mais dúvidas abra em um tópico novo.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    terça-feira, 7 de maio de 2013 22:02
    Moderador
  • ok, obrigado!
    quarta-feira, 8 de maio de 2013 12:20