Olá amigos,
Estou migrando funcionalidades de um site para outro site dentro do mesmo site collection.
Precisava exibir o conteudo de uma lista que estava em outro site.
Tarefa simples de ser realizada utilizando a DataFormWebPart com o parametro
webUrl no seu datasource.
O Grande problema, que mesmo a lista existindo. O Sharepoint retornava a seguinte mensagem "Lista Inexistente" (list not found)
Para solucionar o problema simplesmente troca-se o atributo ViewFlag para "0"
WebPartPages:DataFormWebPart runat="server" IsIncluded="True" AsyncRefresh="True" FrameType="None" NoDefaultStyle="TRUE" ViewFlag="0"
Não me perguntem o porque. Sei que funciona :)
Encontrei essa pérola no seguinte site:
http://www.codepoint.es/archive/2011/07/12/error-de-“list-not-found”-para-un-dataformwebpart-exportado-a-otro-sitio.aspx
Abraços,
Maca
quarta-feira, 31 de agosto de 2011
quinta-feira, 11 de agosto de 2011
Erro "Um arquivo especificado na seção de módulos deste modelo já existe."
Olá,
Ao tentar ativar uma feature, recebi o seguinte erro:
"Um arquivo especificado na seção de módulos deste modelo já existe."
Após instalar e reinstalar feature várias vezes. (minutos perdidos da minha vida)
Encontrei no o segguinte POST
http://lawo.wordpress.com/2010/09/11/file-specified-in-the-modules-section-of-this-template-already-exists/
Que descreve a solução :)
Basicamente, é necessário ir no arquivo Elements do seu modulo e trocar a propriedade "IgnoreIfAlreadyExists" para "true"
Abraço,
Maca
Ao tentar ativar uma feature, recebi o seguinte erro:
"Um arquivo especificado na seção de módulos deste modelo já existe."
Após instalar e reinstalar feature várias vezes. (minutos perdidos da minha vida)
Encontrei no o segguinte POST
http://lawo.wordpress.com/2010/09/11/file-specified-in-the-modules-section-of-this-template-already-exists/
Que descreve a solução :)
Basicamente, é necessário ir no arquivo Elements do seu modulo e trocar a propriedade "IgnoreIfAlreadyExists" para "true"
Abraço,
Maca
sexta-feira, 15 de julho de 2011
Como fazer deploy WSP (moss 2007) em um Sharepoint 2010 server
Olá Amigos,
Depois de 150 anos distante do blog resolvi postar novamente :)
Hoje me deparei com o seguinte problema:
Fazer deploy de um wsp (moss 2007) em um Sharepoint 2010.
Fui em busca do conhecimento (by Et Bilú) e descobri que é uma operação bastante simples.
No Visual Studio 2010, sigam os seguintes passos:
1) Crie um Novo Projeto;
2) Selecione Import SharePoint Solution Package (dentro da aba Sharepoint)
3) Nomeie seu Projeto
4) Escolha a Farm Solution
5) Faça Upload do seu WSP
6) Troque o nome da Feature para o nome da antiga Feature (feature do wsp)
7) Build
8) Deploy
9) Teste
Facílimo!
Até a próxima.
Depois de 150 anos distante do blog resolvi postar novamente :)
Hoje me deparei com o seguinte problema:
Fazer deploy de um wsp (moss 2007) em um Sharepoint 2010.
Fui em busca do conhecimento (by Et Bilú) e descobri que é uma operação bastante simples.
No Visual Studio 2010, sigam os seguintes passos:
1) Crie um Novo Projeto;
2) Selecione Import SharePoint Solution Package (dentro da aba Sharepoint)
3) Nomeie seu Projeto
4) Escolha a Farm Solution
5) Faça Upload do seu WSP
6) Troque o nome da Feature para o nome da antiga Feature (feature do wsp)
7) Build
8) Deploy
9) Teste
Facílimo!
Até a próxima.
Marcadores:
MOSS 2007,
Sharepoint 2010,
WSP
quarta-feira, 25 de março de 2009
Fazer Download de documentos do Sharepoint 2003 usando WS nativos e sem usar OM
Olá Amigos,
Abaixo um pequeno código, que demotra como podemos baixar documentos de uma document library do SharePoint 2003.

public void DownloadFilesFromDocumentLibrary(string url, string documentLibraryName){
Lists.Lists proxy = new Lists.Lists();//set url and credentials on proxy
proxy.Url = url + "_vti_bin/lists.asmx";
proxy.Credentials = CredentialCache.DefaultCredentials;//call get list items to retrieve document library
XmlNode elm = proxy.GetListItems(documentLibraryName, null, null, null, null, null);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(elm.OwnerDocument.NameTable);
nsMgr.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
nsMgr.AddNamespace("z", "#RowsetSchema");
if (elm != null){
XmlNode dataNode = elm.SelectSingleNode("rs:data", nsMgr);
int itemCount = Convert.ToInt32(dataNode.Attributes.GetNamedItem("ItemCount").Value);
if (itemCount == 0){
Console.WriteLine("Nothing to download");
}else{
foreach (XmlNode row in dataNode.SelectNodes("z:row", nsMgr))
{
//Response.Write(row.Attributes.GetNamedItem("ows_LinkFilename").Value+"
");
DownLoadFile(url, documentLibraryName, row.Attributes.GetNamedItem("ows_LinkFilename").Value);
}
}
}
}

public void DownLoadFile(string url, string documentLibraryName, string fileName){
//string downloadPage = url + "/download.aspx";
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream responseStream = null;
FileStream fs = null;
try{
//request = (HttpWebRequest) HttpWebRequest.Create(downloadPage + "?SourceUrl=" + documentLibraryName + "/" + fileName);
request = (HttpWebRequest)HttpWebRequest.Create(SharePointHost + documentLibraryName + "/" + fileName);
request.Credentials = CredentialCache.DefaultCredentials;
request.Timeout = 6000;
response = (HttpWebResponse)request.GetResponse();
responseStream = response.GetResponseStream();//write to filesystem
fs = new FileStream(fileName, FileMode.Create);
byte[] buffer = new byte[1024];
int count = responseStream.Read(buffer, 0, buffer.Length);
while (count > 0)
{
fs.Write(buffer, 0, buffer.Length);
count = responseStream.Read(buffer, 0, buffer.Length);
}
}
finally{
if(fs != null)
fs.Close();
if(responseStream != null)
responseStream.Close();
if(response!=null)
response.Close();
}
}
Abaixo um pequeno código, que demotra como podemos baixar documentos de uma document library do SharePoint 2003.
public void DownloadFilesFromDocumentLibrary(string url, string documentLibraryName){
Lists.Lists proxy = new Lists.Lists();//set url and credentials on proxy
proxy.Url = url + "_vti_bin/lists.asmx";
proxy.Credentials = CredentialCache.DefaultCredentials;//call get list items to retrieve document library
XmlNode elm = proxy.GetListItems(documentLibraryName, null, null, null, null, null);
XmlNamespaceManager nsMgr = new XmlNamespaceManager(elm.OwnerDocument.NameTable);
nsMgr.AddNamespace("rs", "urn:schemas-microsoft-com:rowset");
nsMgr.AddNamespace("z", "#RowsetSchema");
if (elm != null){
XmlNode dataNode = elm.SelectSingleNode("rs:data", nsMgr);
int itemCount = Convert.ToInt32(dataNode.Attributes.GetNamedItem("ItemCount").Value);
if (itemCount == 0){
Console.WriteLine("Nothing to download");
}else{
foreach (XmlNode row in dataNode.SelectNodes("z:row", nsMgr))
{
//Response.Write(row.Attributes.GetNamedItem("ows_LinkFilename").Value+"
");
DownLoadFile(url, documentLibraryName, row.Attributes.GetNamedItem("ows_LinkFilename").Value);
}
}
}
}
public void DownLoadFile(string url, string documentLibraryName, string fileName){
//string downloadPage = url + "/download.aspx";
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream responseStream = null;
FileStream fs = null;
try{
//request = (HttpWebRequest) HttpWebRequest.Create(downloadPage + "?SourceUrl=" + documentLibraryName + "/" + fileName);
request = (HttpWebRequest)HttpWebRequest.Create(SharePointHost + documentLibraryName + "/" + fileName);
request.Credentials = CredentialCache.DefaultCredentials;
request.Timeout = 6000;
response = (HttpWebResponse)request.GetResponse();
responseStream = response.GetResponseStream();//write to filesystem
fs = new FileStream(fileName, FileMode.Create);
byte[] buffer = new byte[1024];
int count = responseStream.Read(buffer, 0, buffer.Length);
while (count > 0)
{
fs.Write(buffer, 0, buffer.Length);
count = responseStream.Read(buffer, 0, buffer.Length);
}
}
finally{
if(fs != null)
fs.Close();
if(responseStream != null)
responseStream.Close();
if(response!=null)
response.Close();
}
}
Marcadores:
Customization with Visual Studio,
MOSS 2007,
Sharepoint 2003,
WSS 3.0
sexta-feira, 12 de dezembro de 2008
FormatDateTime - Mostrar hora no formato 24 horas
Olá Amigos,
Dica idiota, mas me custou alguns minutos da minha vida =]
Eu estava usando o código, para formatar a hora no formato 12 horas
<xsl:value-of select="ddwrt:FormatDateTime(string(@EventDate) ,1046,'hh:mm')" />
Precisava mostrar no formato 24 horas, para isso, foi só trocar a mascara de 'hh:mm' p/ 'HH:mm'
<xsl:value-of select="ddwrt:FormatDateTime(string(@EventDate) ,1046,'HH:mm')" />
Abraços,
Leonardo
Dica idiota, mas me custou alguns minutos da minha vida =]
Eu estava usando o código, para formatar a hora no formato 12 horas
<xsl:value-of select="ddwrt:FormatDateTime(string(@EventDate) ,1046,'hh:mm')" />
Precisava mostrar no formato 24 horas, para isso, foi só trocar a mascara de 'hh:mm' p/ 'HH:mm'
<xsl:value-of select="ddwrt:FormatDateTime(string(@EventDate) ,1046,'HH:mm')" />
Abraços,
Leonardo
sexta-feira, 22 de agosto de 2008
Lendo dados de uma View (SPView) (Exibição)
Olá PessoALL,
Faz tempão que não posto e ainda por cima vou aparecer hoje por aqui para dar uma dicazinha bem simples =]
Criar views (exibições) em listas do SharePoint é uma tarefa muito simples e bem poderosa. Conseguimos fazer diversas funcionalidades (agrupamento, ordenação, limitar itens) usando apenas o mouse.
Então por que ao criarmos uma WebPart precisamos fazer tudo de novo? Na verdade não precisamos ^^
Podemos ler itens diretamente de uma View (Exibição)
Bem, chega de chalálá e vamos ao código:
SPListItemCollection coll = spWeb.Lists["ListName"].GetItems(spWebInstance.Lists["ListName"].Views["ViewName"]);
Toda malandragem envolvida neste código, está em passar a view por parâmetro para o método GetItems, se não pudéssemos fazer isso, seria necessário escrever um baita CAML para alcançar as funcionalidades (agrupamento, ordenação, limitar itens) desejadas
Maca espera ter sido útil =]
Abraços,
Leonardo Macanudo
Faz tempão que não posto e ainda por cima vou aparecer hoje por aqui para dar uma dicazinha bem simples =]
Criar views (exibições) em listas do SharePoint é uma tarefa muito simples e bem poderosa. Conseguimos fazer diversas funcionalidades (agrupamento, ordenação, limitar itens) usando apenas o mouse.
Então por que ao criarmos uma WebPart precisamos fazer tudo de novo? Na verdade não precisamos ^^
Podemos ler itens diretamente de uma View (Exibição)
Bem, chega de chalálá e vamos ao código:
SPListItemCollection coll = spWeb.Lists["ListName"].GetItems(spWebInstance.Lists["ListName"].Views["ViewName"]);
Toda malandragem envolvida neste código, está em passar a view por parâmetro para o método GetItems, se não pudéssemos fazer isso, seria necessário escrever um baita CAML para alcançar as funcionalidades (agrupamento, ordenação, limitar itens) desejadas
Maca espera ter sido útil =]
Abraços,
Leonardo Macanudo
Marcadores:
MOSS 2007,
Sharepoint,
SPList,
SPListItem,
SPView,
WSS 3.0
terça-feira, 27 de maio de 2008
Collection was modified; enumeration operation may not execute
Olá Amigos,
Tenho duas listas relacionadas (tópicos,respostas), preciso remover todas as respostas relacionadas a um determinado tópico.
O primeiro código que vem a cabeça é fazer um for each e deletar item por item.
Como no exemplo abaixo:
SPQuery q = new SPQuery();
q.Query = "<Where><Eq><FieldRef Name='Topico' /><Value Type='Lookup'>" + sTopico + "</Value></Eq></Where>";
SPList listRespostas = SPContext.Current.Web.Lists["Respostas"];
SPListItemCollection itensTopicos = listRespostas.GetItems(q);
foreach (SPListItem itemResposta in itensTopicosFake)
{
itemResposta.Delete();
}
Porém quando executamos este código, nos deparamos com o seguinte erro.
Collection was modified; enumeration operation may not execute
Este erro acontece porque a collection que eu estou usando no for each, está sendo modificada dentro dele mesmo.
Para resolver este problema substitui o for each pelo while abaixo.
while (itensTopicos.Count > 0)
itensTopicos[0].Delete();
Abraços,
Leonardo
Tenho duas listas relacionadas (tópicos,respostas), preciso remover todas as respostas relacionadas a um determinado tópico.
O primeiro código que vem a cabeça é fazer um for each e deletar item por item.
Como no exemplo abaixo:
SPQuery q = new SPQuery();
q.Query = "<Where><Eq><FieldRef Name='Topico' /><Value Type='Lookup'>" + sTopico + "</Value></Eq></Where>";
SPList listRespostas = SPContext.Current.Web.Lists["Respostas"];
SPListItemCollection itensTopicos = listRespostas.GetItems(q);
foreach (SPListItem itemResposta in itensTopicosFake)
{
itemResposta.Delete();
}
Porém quando executamos este código, nos deparamos com o seguinte erro.
Collection was modified; enumeration operation may not execute
Este erro acontece porque a collection que eu estou usando no for each, está sendo modificada dentro dele mesmo.
Para resolver este problema substitui o for each pelo while abaixo.
while (itensTopicos.Count > 0)
itensTopicos[0].Delete();
Abraços,
Leonardo
Marcadores:
Customization with Visual Studio,
MOSS 2007,
Object Model,
WSS 3.0
Assinar:
Postagens (Atom)