quinta-feira, 6 de dezembro de 2007

Filtrar dados de uma lista através de CAML

Olá Amigos,

Ando meio sem tempo para postar, hoje vou fazer um breve post sobre como filtrar dados de uma lista.

Como diria Mauro Sant'Anna "Nem tudo que pode ser inventado deve ser inventado. Um grande exemplo é o CAML" :)

Ao invés de utilizarmos consultas SQL para filtrarmos listas, a Microsoft criou uma linguagem chamada CAML. O CAML é um xml para expressar queries de bancos de dados.

Se você quiser aprender mais sobre CAML, verifique o link abaixo. Ele fornece uma introdução sobre o assunto.

http://msdn2.microsoft.com/en-us/library/ms948028.aspx

Bem, chega de conversa =] Vamos a um pequeno exemplo :)

Problema:
Criar uma webPart, que lê um parametro passado pela QueryString e filtra a lista por este parametro.

//Abrindo a web
SPWeb web = SPContext.Current.Web;

//Criado o CAML
//Note que ele faz uma comparação entre o ID passado pela queryString e a coluna ID da lista
SPQuery q = new SPQuery();
q.Query = "" + Convert.ToString("0" + Page.Request.QueryString["ID"]) + "";

//Carrega em itens uma colletion com os itens (tuplas) da lista task.
SPListItemCollection itens = web.Lists["Tasks"].GetItems(q);

Era isso =]

Abraços,
Leonardo

quarta-feira, 7 de novembro de 2007

Configurar email no Sharepoint

Olá Amigos,

Hoje vou dar uma de administrador e mostrar como configurar email no sharepoint =]

É uma operação bastante simples, não requer prática nem habilidade.

Basta executar uma linha de comando.

stsadm.exe -o email -outsmtpserver -fromaddress -replytoaddress -codepage [-url ]

Por exemplo, vamos utilizar o servidor de smtp "SMTPServer", e vamos utilizar a conta de email someone@example.com como from e a mesma conta como reply-to.
O código fica como no exemplo abaixo:

stsadm.exe -o email -outsmtpserver SMTPServer -fromaddress someone@example.com -replytoaddress someone@example.com -codepage 65001 -url http://server_name

Note que no último parametro configurei a url que vai utilizar esta confiuração de envio de email =]

Como os amigos podem ver é bem mumuzinho =]

Abraços,
Leonardo

quarta-feira, 10 de outubro de 2007

Passeio pelo Object Modelo Sharepoint - Part II

Olá Amigos,

Hoje vou dar continuidade aos posts sobre o Object Model do Sharepoint.

Hoje vou falar sobre uma classe estremamente útil e importante no desenvolvimento sharepoint (SPSite).

SPSite

Através desse classe podemos acessar o nível de Site Colletion.
Uma Site Colletion é uma coleção de sites (SPWeb)
Cada objeto SPSite possui várias propriedades da coleção, tais como o responsável, conteúdo corrente do BD, a url do web site.

SPSite mySiteColl = new SPSite("site_collection_URL");
String siteCollOwner = mySiteColl.Owner.Name;
String contentDB = mySiteColl.ContentDatabase.Name;
String topLevelSite = mySiteCollection.RootWeb.Title;

Importante: Existem várias maneiras de acessar uma site collection, a maneira citada acima deve ser utilizada quando estamos em uma aplicação fora do contexto do sharepoint. Se tivermos em uma webPart dentro do contexto do Sharepoint o código acima deveria ficar assim:

SPSite mySiteColl = SPContext.Current.Site;
String siteCollOwner = mySiteColl.Owner.Name;
String contentDB = mySiteColl.ContentDatabase.Name;
String topLevelSite = mySiteCollection.RootWeb.Title;

segunda-feira, 8 de outubro de 2007

Passeio pelo Object Modelo Sharepoint - Part I

Olá Amigos,

Apartir de hoje escreverei uma serie de posts sobre o Object Model do sharepoint.
Mas afinal, oque é object model?
É a Arquitetura de programação do WSS, através dele conseguimos programaticamente manipular totalmente a estrutura do sharepoint.

SPFarm

Está no topo da hierarquia do object model.
Cada objeto SPFarm tem uma coleção de servidores associados a ele representados pelo objeto SPServerCollection object.
Você pode usar uma estrutura de repetição para iterar em cada servidor através do objeto SPServerCollection.

SPFarm myFarm = SPFarm.Local;
SPServerCollection myServerCollection = myFarm.Servers;
foreach (SPServer myServer in myServerCollection){
    //adiciona o código para executar a ação
}

SPWebApplication

Representa um IIS load-balanced Web application.
No WSS, aplicações web são representadas pela classe SPWebApplication.
Cada objeto SPWebApplication tem uma coleção de coleções de site associadas a ele e que são representados pelo objeto SPSiteCollection.
Você pode usar uma estrutura de repetição para interar com cada coleção de site no objeto SPSiteCollection.
Coleções de site individuais são representadas pelos objetos SPSite.

SPSite mySiteCollection =   new SPSite("site_collection_URL");
SPWebApplication myWebApp = mySiteCollection.WebApplication; SPSiteCollection mySiteCollections =  myWebApp.Sites;
foreach (SPSite siteCollection in mySiteCollections){
    //executa a ação na coleção de sites
}

Por hora é isso =]

Abraços,
Leonardo

segunda-feira, 17 de setembro de 2007

"Object reference not set to an instance of object" Solucionado!

Olá Amigos,

Após varias pesquisas na internet e inumeros testes, desvendei o problema "Object reference not set to an instance of object"

Inicialmente tentamos a solução apontada pelo site http://www.wsswiki.com/Visual_Studio_Extensions_For_WSS_3.0 porém a mesma não surtiu resultados.

Após tentamos (Sem sucesso):
Criar um arquivo .bat com as linhas
"%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -if webpartTest.dll
"%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -uf webpartTest

Até que enfim:

A solução encontrada é bastante simples, na pasta de seu projeto existe um arquivo chamado solution.xml, este arquivo tem um GUID que é utilizado como identificador.

O problema era gerado porque havia duas soluções distintas com o mesmo ID.
Para solucionarmos:
1 - geramos um novo GUID
2 - Substituimos no solution.xml (solution id="GUID" name="NOME_SOLUCAO")
3 - Substituimos no manifest.xml (Solution SolutionId="GUID")

Abraços,
Leonardo Borille de Queiroz

segunda-feira, 3 de setembro de 2007

Adicionando e deletando listas de Posts

Olá Amigos,

Abaixo um código bastante útil, ele mostra como adicionar e deletar listas em tempo de execução.

using (SPSite site = new SPSite("http://URL/")){
//Adicionar Lista
site.AllWebs[0].Lists.Add("POSTS", "POSTS", SPListTemplateType.Posts);
//Adicionar Campo Descrição
site.AllWebs[0].Lists["POSTS"].Fields.Add("Descrição",
SPFieldType.Note, true);
//Deletar Lista
site.AllWebs[0].Lists["POSTS"].Delete();
}

Abraços,
Leonardo

terça-feira, 28 de agosto de 2007

Como criar uma Master Page no Sharepoint Designer

1° Abra o site

2° Já até a "Galeria de Páginas Mestras"




















3° Duplique e renome-i para "principal.master"




















4° Sete a principal.master para "Custom page"




















5° Para se certificar que funcionou o processo, abra a principal.master e adicione um html ao seu gosto.Exemplo:







6° Duplique e renome-i a default .aspx



















7° Abra a principal.aspx e troque a master que ela herda para "custom.master"




8° Resultado

segunda-feira, 27 de agosto de 2007

Entendendo Master Pages WSS/MOSS/Sharepoint

Olá Amigos,

Pode parecer meio tosco, mas eu não conseguia entender como na minha master page ia avisar para o sharepoint que este content seria uma área para "arrastar" webparts.

O que eu não sabia que é que na verdade isso não é feito na Master :)

Na master você apenas cria os contents e na página aspx que utiliza a master você adiciona o código:



Ele é responsável por fazer a mágica da aparição das webparts :)

Abraços,
Leonardo

terça-feira, 21 de agosto de 2007

Logs no Sharepoint/WSS

Olá Amigos,

As vezes recebemos a mensagem "ERRO!" e não sabemos oque fazer.
Uma boa dica é dar uma olhada nos logs do sharepoint.

Eles ficam na pasta:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS

Eles são txt e são gerados de 30 em 30 minutos, os registros mais novos ficam no fim do arquivo

Abraços,
Leonardo

segunda-feira, 20 de agosto de 2007

Como resolver o problema: O modelo escolhido é inválido ou não pode ser encontrado.

Olá Amigos,

Estava recebendo essa mensagem no momento que tentava criar um site com um site definition criado por mim.

Para solucionar este enigma realize os seguintes passos:


1° Baixar o
Windows SharePoint Services 3.0 Application Template: Application Template Core

http://www.microsoft.com/downloads/details.aspx?FamilyId=C1039E13-94DA-4D7D-8CAE-3B96FA5A4045&displaylang=en

2° Abra o cmd e execute
stsadm.exe -o addsolution -filename ApplicationTemplateCore.wsp


stsadm.exe -o deploysolution -name ApplicationTemplateCore.wsp -immediat
e -allowGacDeployment


stsadm.exe -o copyappbincontent

http://forums.microsoft.com/Technet-BR/ShowPost.aspx?PostID=1590759&SiteID=29

5°No diretório do site definition existe um arquivo chamado solution.xmlNeste arquivo existe um nodo manifest , existe um atributo "templateid", para cada template troque o valor para um número maior que 10000 (o valor default é 10000) e que cada site definition tenha seu próprio número.

Abraços,
Leonardo

segunda-feira, 6 de agosto de 2007

Criar blog site via código C# e asp.net no WSS 3.0

Olá Amigos,

Hoje vou mostrar uma pequena variação do post anterior.
É possível criar sites com templates pré-definidos (blog, wiki, etc..)

Exemplo:

SPSite mySite = new SPSite("http://vm-wssadted/");
SPWebCollection sp = mySite.AllWebs;
//cria blog site
SPWeb myBlogsite = sp.Add("site", "titulo", "descricao", 1046, SPWebTemplate.WebTemplateBLOG, false, false);

Todo o segredo está no:
SPWebTemplate.WebTemplateBLOG

Se fosse a criação de um Wiki, seria:
SPWebTemplate.WebTemplateWIKI

Abraços,
Maca

quinta-feira, 2 de agosto de 2007

Criar site via código C# e asp.net no WSS 3.0

Olá Amigos,

O mecanismo é bem simples.

SPSite mySite = new SPSite("http://seusite/");
SPWebCollection sp = mySite.AllWebs;
SPWeb mynewsite = sp.Add('novoSite');

Esta é a maneira mais simples, mas funciona :)

Abraços,
Leonardo

segunda-feira, 30 de julho de 2007

Criar Tema

Olá,

Outro link :)

Este explica como criar temas para sharepoint.

http://www.sharepointblogs.com/jeanmarc/archive/2007/07/20/3190.aspx

Abraços

quinta-feira, 26 de julho de 2007

Criar webpart com formulário (WSS)

Olá Pessoal,

Abaixo um excelente link, sobre como criar uma webpart que tenha um formulário.

http://www.codeproject.com/aspnet/SharePointFormControls.asp