none
Capturar URL de imagem da lista Pessoas e Grupos Sharepoint 2007 RRS feed

  • Pergunta

  • Olá pessoas,

    Não consigo capturar a url da do campo imagem para um determinado usuario cadastrado na lista Pessoas e Grupos.

    Em outras listas eu faço a captura normalmente através de um For/Foreach na lista e pegando a URL, entretando nessa lista específica eu não obtenho nenhum retorno.

    segue o código:

     SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite elevatedSite = new SPSite(site))
                    {
                        using (SPWeb web = elevatedSite.OpenWeb(spweb))
                        {
                            //Lista de pessoas
                            SPList listaPessoas = web.Lists["Lista de Informações sobre o Usuário"];

                            foreach (SPListItem usuario in listaPessoas.Items)
                            {

                                  this.imagemAnversariante = usuario["Imagem"].ToString();
                            }
                        }
                    }

                });

        essa variavel "imagemAniversariante" é do tipo string e para outras lista tudo isso funciona, menos para essa.

    Peço a ajuda de vcs.

    Obrigado!

    Eduardo

     

     

    segunda-feira, 1 de novembro de 2010 20:41

Respostas

  • No caso do usuário não possuir uma imagem, uma template é mostrada e essa consistência ja está feita, o problema era que sempre vinha nulo. Eu disse era pq ja resolvi.

    A variavel "this.imagemAnversariante " era instanciada fora do método onde eu faço a captura dos dados, depois que eu a coloquei dentro do metodo, tudo passou a funcionar.

    Segue abaixo o trecho de código que funcionou:

     

     private DataTable RetornaDadosDaListaPessoasGrupos(string site, string spweb)
            {
                string nome;
                DateTime dataAniversario;
                string departamento;
                string ramal;
                string imagem;


                DataTable dadosAniversariantes = new DataTable();
                dadosAniversariantes.Columns.Add("Nome", typeof(string));
                dadosAniversariantes.Columns.Add("Data de Nascimento", typeof(DateTime));
                dadosAniversariantes.Columns.Add("Departamento", typeof(string));
                dadosAniversariantes.Columns.Add("Ramal", typeof(string));
                dadosAniversariantes.Columns.Add("Imagem", typeof(string));

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite elevatedSite = new SPSite(site))
                    {
                        using (SPWeb web = elevatedSite.OpenWeb(spweb))
                        {

                            //Lista de pessoas
                            SPList listaPessoas = web.Lists["Lista de Informações sobre o Usuário"];

                            foreach (SPListItem usuario in listaPessoas.Items)
                            {
                                nome = string.Empty;
                                dataAniversario = new DateTime();
                                departamento = string.Empty;
                                ramal = string.Empty;
                                imagem = string.Empty;


                                nome = usuario["Nome"].ToString();

                                if (usuario["Data de Nascimento"] != null)
                                {
                                    dataAniversario = DateTime.Parse(usuario["Data de Nascimento"].ToString());
                                   
                                }

                                if (usuario["Departamento"] != null)
                                {
                                    departamento = usuario["Departamento"].ToString();
                                }

                                if (usuario["Ramal"] != null)
                                {
                                    ramal = usuario["Ramal"].ToString();
                                }

                                if (usuario["Imagem"] != null)
                                {
                                    SPFieldUrlValue value = new SPFieldUrlValue(usuario["Imagem"].ToString());

                                    imagem = value.Url;
                                }
                                else
                                {
                                    imagem = urlFotoTemplate;
                                }

                                dadosAniversariantes.Rows.Add(new object[] { nome, dataAniversario, departamento, ramal, imagem });

                            }
                        }
                    }
                });


                return dadosAniversariantes;
            }

    Obrigado pela ajuda,

     

    Eduardo

    • Marcado como Resposta Eduardo Araújo quarta-feira, 3 de novembro de 2010 16:59
    quarta-feira, 3 de novembro de 2010 15:40

Todas as Respostas

  • Olá Eduardo,

    tudo bem?

    Por que não funciona, dá erro? Verifique se cada item tem valor (não é nulo).. e sem todos os itens são usuários. Nesta lista, também são armazenados os grupos do SharePoint, ou seja, estes não tem imagem.

    Abraço!


    Thiago Silva SharePoint Specialist - Done IT http://www.doneit.com.br http://www.canalsharepoint.com.br
    quarta-feira, 3 de novembro de 2010 02:51
  • Olá Thiago, Na verdade o campo imagem é apenas um dos que capturo, os outros como por exemplo, nome, data de nascimento, departamento, dentre outros, eu consigo capturar normalmente, apenas nesse tenho problema, ele simplesmente vem nulo mesmo tendo uma URL da imagem no campo. Obrigado, Eduardo
    quarta-feira, 3 de novembro de 2010 12:16
  • O usuário possui imagem associada? Se não tiver, o campo virá nulo. Se você acabou de colocar uma foto no perfil do usuário, é preciso esperar que o SharePoint sincronize estas informações (considerando que o serviço de sincronização esteja ativo e configurado).

    Para configurar o serviço, caso necessário:

    http://www.canalsharepoint.com.br/tutoriais/Tutoriais/Iniciando%20os%20Serviços%20de%20Pesquisa%20do%20Windows%20SharePoint%20Services.aspx

    Abraço!


    Thiago Silva SharePoint Specialist - Done IT http://www.doneit.com.br http://www.canalsharepoint.com.br
    quarta-feira, 3 de novembro de 2010 13:41
  • No caso do usuário não possuir uma imagem, uma template é mostrada e essa consistência ja está feita, o problema era que sempre vinha nulo. Eu disse era pq ja resolvi.

    A variavel "this.imagemAnversariante " era instanciada fora do método onde eu faço a captura dos dados, depois que eu a coloquei dentro do metodo, tudo passou a funcionar.

    Segue abaixo o trecho de código que funcionou:

     

     private DataTable RetornaDadosDaListaPessoasGrupos(string site, string spweb)
            {
                string nome;
                DateTime dataAniversario;
                string departamento;
                string ramal;
                string imagem;


                DataTable dadosAniversariantes = new DataTable();
                dadosAniversariantes.Columns.Add("Nome", typeof(string));
                dadosAniversariantes.Columns.Add("Data de Nascimento", typeof(DateTime));
                dadosAniversariantes.Columns.Add("Departamento", typeof(string));
                dadosAniversariantes.Columns.Add("Ramal", typeof(string));
                dadosAniversariantes.Columns.Add("Imagem", typeof(string));

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite elevatedSite = new SPSite(site))
                    {
                        using (SPWeb web = elevatedSite.OpenWeb(spweb))
                        {

                            //Lista de pessoas
                            SPList listaPessoas = web.Lists["Lista de Informações sobre o Usuário"];

                            foreach (SPListItem usuario in listaPessoas.Items)
                            {
                                nome = string.Empty;
                                dataAniversario = new DateTime();
                                departamento = string.Empty;
                                ramal = string.Empty;
                                imagem = string.Empty;


                                nome = usuario["Nome"].ToString();

                                if (usuario["Data de Nascimento"] != null)
                                {
                                    dataAniversario = DateTime.Parse(usuario["Data de Nascimento"].ToString());
                                   
                                }

                                if (usuario["Departamento"] != null)
                                {
                                    departamento = usuario["Departamento"].ToString();
                                }

                                if (usuario["Ramal"] != null)
                                {
                                    ramal = usuario["Ramal"].ToString();
                                }

                                if (usuario["Imagem"] != null)
                                {
                                    SPFieldUrlValue value = new SPFieldUrlValue(usuario["Imagem"].ToString());

                                    imagem = value.Url;
                                }
                                else
                                {
                                    imagem = urlFotoTemplate;
                                }

                                dadosAniversariantes.Rows.Add(new object[] { nome, dataAniversario, departamento, ramal, imagem });

                            }
                        }
                    }
                });


                return dadosAniversariantes;
            }

    Obrigado pela ajuda,

     

    Eduardo

    • Marcado como Resposta Eduardo Araújo quarta-feira, 3 de novembro de 2010 16:59
    quarta-feira, 3 de novembro de 2010 15:40