Usuário com melhor resposta
Capturar postagens recentes de um subsite do tipo blog

Pergunta
-
Boa Tarde,
Eu tenho site em que preciso mostrar na home dele os 3 últimos posts (de forma resumida/truncado) de um blog que na verdade é um subsite. Gostaria de ajuda para fazê-lo pela administração do site e/ou pelo visual studio usando LINQ ou qq outra forma de pesquisa. Tentei pela adm do site mas não consegui e não sei onde são criados os posts dentro so sharepoint para que possa tentar capturá-los pelo visual studio usando LINQ.
Obrigado,
Eduardo
- Editado Eduardo Araújo segunda-feira, 2 de agosto de 2010 19:11 completar
Respostas
-
Eduardo,
Quando você cria um blog, internamente o SharePoint cria uma lista chamada Posts (Postagens). Você pode fazer suas consultas a partir desta lista, ok?
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo segunda-feira, 2 de agosto de 2010 19:26
-
Eduardo,
Depende muito de como você quer tratar esta modificação. Por exemplo, você pode fazer isso com o SharePoint Designer utilizando XSLT. Assim você não "desenvolve" código para colocar no servidor - Sem Web Parts - o que torna, por exemplo, uma futura migração mais fácil.
Entretanto, desenvolver webpart você consegue ter mais "poderes" para realizar solicitações e tratá-las conforme necessário. Sendo assim, LINQ to SharePoint é uma boa opção, também.
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo segunda-feira, 2 de agosto de 2010 19:41
-
Isso ai Pessoal!
A comunidade é assim, estamos todos conectados. :)
Somente comentando... A seguir um exemplo de como criar um XSLT Data View para visualizar listas no SharePoint 2007:
Creating an XSLT DataView for a Sharepoint List
http://www.sharepoint-tips.com/2007/05/sharepoint-designer-article-2-creating.html
Abraços!
Wagner Amorim
-
Sharepoint Specialist
MSF & SCRUM Practitioner
Microsoft MCP, MCTS e MCPD
-
http://www.doneit.com.br
http://www.canalsharepoint.com.br
http://waamorim.spaces.live.com
Wagner M. Amorim- Marcado como Resposta Eduardo Araújo terça-feira, 3 de agosto de 2010 18:03
-
Eduardo
Veja, nesta linha:
var dc = new SPLinqDataContext(SPContext.Current.Web.Url);
você definine a URL do Site onde você vai trabalhar. Certo?
A url do Site Pai é diferente do Site Filho, a sua lista só existe no site Filho, então ele não está encontrando a lista, entendeu?
Por Exemplo:
Site Pai: http://teste
Site Filho: http://teste/filho
Quando você coloca a webpart no site Pai, a url retornada em SPContext.Current.Web.Url é http://teste e no filho http://teste/filho
Entendeu o problema?
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo quarta-feira, 4 de agosto de 2010 12:56
-
Eduardo,
Compartilhar o conhecimento faz parte da vida de um SharePointer..kk (Share = Compartilhar =D)
Você poderia fazer de forma fixa: var dc = new SPLinqDataContext(SPContext.Current.Web.Url + "/filho");
ou criar uma propriedade para a webpart (Recomendado).
Sabe quando você vai editar a web part e aparece o menu do lado direito, com as guias aparências, etc?
Então, você pode fazer uma propriedade nova para receber a url do site e deixar a sua webpart dinâmica e configurável para cada site.
[
WebBrowsable(true),
WebDisplayName("URL do Site:"),
WebDescription("Insira a url do Site."),
Personalizable(PersonalizationScope.Shared),
Category("Configurações"), DefaultValue("")]
public string SiteUrl { get; set; }
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo quarta-feira, 4 de agosto de 2010 13:57
-
Eduardo,
Quando você cria uma Visual Web Part, você tem um User Control para fazer o Layout dela e tem um Arquivo .cs com o nome da Web Part que herda da classe WebPart, certo?
Neste arquivo você cola o que eu te mandei.
Se precisar de ajuda, me adiciona no msn: rodrigo.romano@live.com
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo quarta-feira, 4 de agosto de 2010 13:52
Todas as Respostas
-
Eduardo,
Quando você cria um blog, internamente o SharePoint cria uma lista chamada Posts (Postagens). Você pode fazer suas consultas a partir desta lista, ok?
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo segunda-feira, 2 de agosto de 2010 19:26
-
Obrigado Romano,
Vou testar e depois compartilho a experiência.
Como ainda sou novo no SharePoint, gostaria de saber sua opinião neste caso:
Seria melhor eu criar uma visual webpart no visual studio e fazer as consultas via LINQ nessa lista de postagens ou ir pela administração do site Pai e criar uma lista/webpart a partir da lista de Posts do subsite (Blog) ?
Obrigado novamente,
Eduardo
-
Eduardo,
Depende muito de como você quer tratar esta modificação. Por exemplo, você pode fazer isso com o SharePoint Designer utilizando XSLT. Assim você não "desenvolve" código para colocar no servidor - Sem Web Parts - o que torna, por exemplo, uma futura migração mais fácil.
Entretanto, desenvolver webpart você consegue ter mais "poderes" para realizar solicitações e tratá-las conforme necessário. Sendo assim, LINQ to SharePoint é uma boa opção, também.
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo segunda-feira, 2 de agosto de 2010 19:41
-
Entendi Rodrigo,
Vou tentar usando LINQ, mas caso eu precise futuramente, vc poderia me passar algum exemplo de utilização de XSLT nesse caso, ainda não tive tempo para desvendar o sharepoint designer. Desde que começei com sharepoint (1 mês +-) eu foquei no training kit e nas aulas do Learn do site oficial. Se vc tiver algo eu ficaria muito grato.
Muito obrigado,
Eduardo
-
Eduardo,
Pode deixar.
Se você precisar, de ajuda, não hesite em perguntar!
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
-
Obrigado Rodrigo, estou no aguardo.
Rapaz nosso Brasil é muito pequeno mesmo. Eu trabalho no MIC - Microsoft Innovation Center - de Vitória, mostrei sua reposta para meu colega de trabalho e ele me disse que vc quando veio aqui com a equipe do canal sharepoint no TechShare e vcs precisaram fazer algumas coisas na sede do MIC, foi a minha baia q vc usou, rsrsrs.
Pois é, depois daquele evento paramos de desenvolver nosso portal em asp.net e já está saindo a primeira versão dele em SharePoint. Vai depender de como vou me virar com essas consultas LINQ rsrsrs.
Thanks a lot,
Eduardo
-
Eduardo,
Nossa!! Jura?? Que coincidência!!
Legal saber disso cara! Realmente muito pequeno! Se você precisar de qualquer coisa aí pode falar, ok! =D
Gostei muito do pessoal do MIC Vitória. Manda um abraço para todos!
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
-
Isso ai Pessoal!
A comunidade é assim, estamos todos conectados. :)
Somente comentando... A seguir um exemplo de como criar um XSLT Data View para visualizar listas no SharePoint 2007:
Creating an XSLT DataView for a Sharepoint List
http://www.sharepoint-tips.com/2007/05/sharepoint-designer-article-2-creating.html
Abraços!
Wagner Amorim
-
Sharepoint Specialist
MSF & SCRUM Practitioner
Microsoft MCP, MCTS e MCPD
-
http://www.doneit.com.br
http://www.canalsharepoint.com.br
http://waamorim.spaces.live.com
Wagner M. Amorim- Marcado como Resposta Eduardo Araújo terça-feira, 3 de agosto de 2010 18:03
-
Olá Rodrigo, tive um problema ao tentar customizar uma visual web part via visual studio, vou explicar:
Tenho um site criado com o template blank site e nele add um subsite blog.
Quando criei a visual webpart eu vinculei a url do SUBSITE e cliquei em OK,
Add as referencias necessarias,
Add uma Sharepoint grid view só pra ver se o retorno a popularia:
<SharePoint:SPGridView ID="spGridView" runat="server" AutoGenerateColumns="false">
<HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" />
<Columns>
<SharePoint:SPBoundField DataField="Title" HeaderText="Title">
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="Body" HeaderText="Body">
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="Category" HeaderText="Category">
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="Published" HeaderText="Published">
</SharePoint:SPBoundField>
</Columns>
</SharePoint:SPGridView>Criei um mapeamante de Entidades:
set path=%path%;c:\program files\common files\microsoft shared\web server extensions\14\bin
spmetal.exe /web:http://intranet.contoso.com
/namespace:SPCHOL302_Ex1.SPLinqDemoWebPart /code:SPLinq.cs
mudando, é claro, a url e o name space,
criei um metodo para fazer a consulta e popular a gridview:
private void PopulaGridView()
{
var dc = new SPLinqDataContext(SPContext.Current.Web.Url);
var Employees = dc.GetList<Post>("Posts");
var empQuery = from post in Employees
select new
{
post.Title,
post.Body,
post.CategoryTitle,
Published = post.Published.Value.ToShortDateString(),
};
spGridView.DataSource = empQuery;
spGridView.DataBind();
}Faço o Deploy e na hora de add essa webpart no site PAI, mando add uma webpart custom, escolho essa feita e add,
Na hora q add aparece o seguinte erro:
Error
An unexpected error has occurred.Troubleshoot issues with Microsoft SharePoint Foundation.
Correlation ID: 90593d59-e976-40bd-b964-4bc961a6bf68
Date and Time: 8/3/2010 3:40:58 PM
verifiquei que quando visualizo a webpart no modo design, existe o seguiinte erro:There was an error rendering the control.Object reference not set to an instance of an object.Tem mais uma coisa, deixei a web parte em debug e fui no site PAI e tentei add essa webpart, lembrando que essa webpart foi codificada para busca a lista Posts que fica no subsite, então... qdo mando depurar, obviamente ele abre no browser o subsite, mas como quero add essa webpart no site pai, tento navegar para ele, nesse momento aparece uma exeção dizendo que essa lista Posts não existe no site PAI, seria esse o problema? E se for como corrijo?Fiz tudo que minha pouca experiência me permitiu fazer, agradeçeria vossa ajuda.Obrigado,Eduardo -
Eduardo,
As configurações de BoundFields e Colunas geradas em sua Query estão diferentes, veja:
<SharePoint:SPBoundField DataField="Title" HeaderText="Title">
var empQuery = from post in Employees
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="Body" HeaderText="Body">
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="Category" HeaderText="Category">
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="Published" HeaderText="Published">
</SharePoint:SPBoundField>
select new
{
post.Title,
post.Body,
post.CategoryTitle,
Published = post.Published.Value.ToShortDateString(),
};
Elas precisam ser iguais para funcionar.
Outra coisa, como você está fazendo o desenvolvimento? Você tem uma máquina com o SharePoint instalado para isso?
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
-
Opa Rodrigo,
Eu poderia fazer
Category = post.CategoryTitle;?
Pq o mapeamento de entidade só me da duas propriedades: CategoryTitle e CategoryId
Vc leu no final do poste que o site pai tbm não esta enxergando a lista Post? Coloquei a Webpart em debug e quando naveguei para o site pai tive essa exeção propragada.
Aqui nossa equipe e infra são assim:
Pra esse projeto temos um rapaz na infra, um designer e eu desenvolvendo.
Como só eu vou desenvolver nós fizemos o seguinte, temos aqui umas maquinas parrudonas e colocamos em uma o sharepoint server e eu faço acesso a acesso via RDP, nela tem tudo para o desenvolvimento, como uso dual dysplay aqui (vc deve lembrar) fica facil trabalhar assim.
O nosso designer fica em outra maquina parrudona e acessa o meu site via sharepoint designer e faz as customizações. Nesse momento de testes eu criei uma webapp a parte para "fuçar" ao maximo e levar para o ambiente de desenvolvimento apenas oq ja sei q vai funfar.
Para as customizações nós temos tbm um TFS2010 já integrado com sharepoint server 2010.
Prefiro o acesso via RDP na maquina parrudona pq ela é um HP touch de 23", mas eu prefiro dois monitores de 17".
Depois do desenvolvimenteo, temos um ambiente de homologação onde a nossa chefe vai testar.
Depois mandamos para produção q é uma hospedagem fora.
Sobre esses ultimos 2 pontos eu aproveito pra perguntar como q faço a integração continua das porções funcionais do projeto que vou entregar e cada sprint. Na hospedagem, por exemplo, só somos owners do site, ou seja, nada de stsadmin.
Minha Sprint termina quinta e acho q to meio atrasado, omg.
Obrigado,
Eduardo
-
Eduardo,
Você pode fazer desta maneira, sem problemas.
Ahh Eu perguntei do modelo de desenvolvimento para saber se você tinha como debugar e entender o problema que estava acontecendo.
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
-
Legal, da pra debugar sim.
Mas eu ainda não descobri como resolver o problema:
deixei a web parte em debug e fui no site PAI e tentei add essa webpart, lembrando que essa webpart foi codificada para busca a lista Posts que fica no subsite, então... qdo mando depurar, obviamente ele abre no browser o subsite, mas como quero add essa webpart no site pai, tento navegar para ele, nesse momento aparece uma exeção dizendo que essa lista Posts não existe no site PAI, seria esse o problema? E se for como corrijo?
E se tento simplesmente add a web part sem que ela esteja em debug, aparece o seguinte erro:
Error
An unexpected error has occurred.Troubleshoot issues with Microsoft SharePoint Foundation.
Correlation ID: 90593d59-e976-40bd-b964-4bc961a6bf68
Date and Time: 8/3/2010 3:40:58 PM
Obrigado,
Eduardo
-
Eduardo
Veja, nesta linha:
var dc = new SPLinqDataContext(SPContext.Current.Web.Url);
você definine a URL do Site onde você vai trabalhar. Certo?
A url do Site Pai é diferente do Site Filho, a sua lista só existe no site Filho, então ele não está encontrando a lista, entendeu?
Por Exemplo:
Site Pai: http://teste
Site Filho: http://teste/filho
Quando você coloca a webpart no site Pai, a url retornada em SPContext.Current.Web.Url é http://teste e no filho http://teste/filho
Entendeu o problema?
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo quarta-feira, 4 de agosto de 2010 12:56
-
Rodrigo,
O problema eu havia ententido, não dessa forma clara que vc explicou, mas suspeitei disso.
Agora como eu resolvo isso, pq na criação da webpart eu faço a vinculação dela com o site filho, ok?
Faço a pesquisa da lista Post q está no site filho, ok?
Como vc disse, qdo eu tentar colocar essa webpart no site Pai, terei esse erro pois o Pai não "enxerga" a lista Post. So, how to fix this?
Eu teria que deixar essa lista do site filho "visivel" para o site Pai e manter a mesma contrução da web part? Como faria a Lista visivel?
Eu poderia nessa linha:
var dc = new SPLinqDataContext(SPContext.Current.Web.Url);
fixar o contexto do site filho ao invén de usar o current?
Desculpa o incomodo Rodrigo, vc está sendo extremamente prestativo, mas aqui no forum foi o único lugar que achei pessoas como vc q realmente compartilham conhecimento.
Obrigado,
Eduardo
- Editado Eduardo Araújo quarta-feira, 4 de agosto de 2010 13:06 completar
-
Eduardo,
Compartilhar o conhecimento faz parte da vida de um SharePointer..kk (Share = Compartilhar =D)
Você poderia fazer de forma fixa: var dc = new SPLinqDataContext(SPContext.Current.Web.Url + "/filho");
ou criar uma propriedade para a webpart (Recomendado).
Sabe quando você vai editar a web part e aparece o menu do lado direito, com as guias aparências, etc?
Então, você pode fazer uma propriedade nova para receber a url do site e deixar a sua webpart dinâmica e configurável para cada site.
[
WebBrowsable(true),
WebDisplayName("URL do Site:"),
WebDescription("Insira a url do Site."),
Personalizable(PersonalizationScope.Shared),
Category("Configurações"), DefaultValue("")]
public string SiteUrl { get; set; }
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo quarta-feira, 4 de agosto de 2010 13:57
-
Rodrigo,
Vou tentar fazer oq é recomendado então, mas fiquei meio perdido.
Esse menu de edição q vc mencionou é aquele ja no site com a webpart instalada? Se for isso como farei sendo q nem consigo inseri-la q ja aparece o erro?
Ou esse código eu add no corpo da minha webpart fora do page load?
-
Eduardo,
Quando você cria uma Visual Web Part, você tem um User Control para fazer o Layout dela e tem um Arquivo .cs com o nome da Web Part que herda da classe WebPart, certo?
Neste arquivo você cola o que eu te mandei.
Se precisar de ajuda, me adiciona no msn: rodrigo.romano@live.com
Abraços
Rodrigo A. Romano
-
SharePoint Specialist
Microsoft MCP e MCTS
-
http://rodrigo-romano.spaces.live.com
http://www.canalsharepoint.com.br
Rodrigo A. Romano
- Marcado como Resposta Eduardo Araújo quarta-feira, 4 de agosto de 2010 13:52
-