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
terça-feira, 27 de maio de 2008
sexta-feira, 23 de maio de 2008
SharePoint Data View Permissão de Usuários
Olá Amigos,
Para verificar o nível de permissão de um usuário quando estamos dentro de um XSL, devemos utilizar a função "ddwrt:IfHasRights(codigoDaPermissao)".
Exemplo (Exclusão de itens):
<xsl:if test="ddwrt:IfHasRights(8)">
...
</xsl:if>
Abaixo as permissões e seus respectivos "códigos"
ViewListItems - 1
AddListItems - 2
EditListItems - 4
DeleteListItems - 8
ApproveItems - 16
OpenItems - 32
ViewVersions - 64
DeleteVersions - 128
CancelCheckout - 256
PersonalViews - 512
ManageLists - 2048
ViewFormPages - 4096
Open - 65536
ViewPages - 131072
AddAndCustomizePages - 262144
ApplyThemeAndBorder - 524288
ApplyStyleSheets - 1048576
ViewUsageData - 2097152
CreateSSCSite - 4194314
ManageSubwebs - 8388608
CreateGroups - 16777216
ManagePermissions - 33554432
BrowseDirectories - 67108864
BrowseUserInfo - 134217728
AddDelPrivateWebParts - 268435456
UpdatePersonalWebParts - 536870912
ManageWeb - 1073741824
UseRemoteAPIs - 137438953472
ManageAlerts - 274877906944
CreateAlerts - 549755813888
EditMyUserInfo - 1099511627776
EnumeratePermissions - 4611686018427387904
FullMask - 9223372036854775807
É um script curto, porém esta função ainda vai salvar sua vida.
Abraços,
Leonardo
Para verificar o nível de permissão de um usuário quando estamos dentro de um XSL, devemos utilizar a função "ddwrt:IfHasRights(codigoDaPermissao)".
Exemplo (Exclusão de itens):
<xsl:if test="ddwrt:IfHasRights(8)">
...
</xsl:if>
Abaixo as permissões e seus respectivos "códigos"
ViewListItems - 1
AddListItems - 2
EditListItems - 4
DeleteListItems - 8
ApproveItems - 16
OpenItems - 32
ViewVersions - 64
DeleteVersions - 128
CancelCheckout - 256
PersonalViews - 512
ManageLists - 2048
ViewFormPages - 4096
Open - 65536
ViewPages - 131072
AddAndCustomizePages - 262144
ApplyThemeAndBorder - 524288
ApplyStyleSheets - 1048576
ViewUsageData - 2097152
CreateSSCSite - 4194314
ManageSubwebs - 8388608
CreateGroups - 16777216
ManagePermissions - 33554432
BrowseDirectories - 67108864
BrowseUserInfo - 134217728
AddDelPrivateWebParts - 268435456
UpdatePersonalWebParts - 536870912
ManageWeb - 1073741824
UseRemoteAPIs - 137438953472
ManageAlerts - 274877906944
CreateAlerts - 549755813888
EditMyUserInfo - 1099511627776
EnumeratePermissions - 4611686018427387904
FullMask - 9223372036854775807
É um script curto, porém esta função ainda vai salvar sua vida.
Abraços,
Leonardo
Marcadores:
MOSS 2007,
Sharepoint,
WSS 3.0,
XSL
segunda-feira, 19 de maio de 2008
XSL formatar data no formato DD/MM
Olá Amigos,
Corrigindo este POST =]
Abaixo vocês vão ver toda uma choradeira de minha parte e uma baita gambiarra.
Porém existe um forma elegante sim de resolver este problema.
É essa:
<xsl:value-of select="ddwrt:FormatDateTime(string(@Data),1046,'dd/MM')"/>
Abaixo uma pequena gambiarra criada por mim para exibir a data no formato DD/MM, tive que fazer isto, pois a função nativa do SharePoint (ddwrt:FormatDate) não oferece este formato.
Abraços,
Leonardo
<xsl:choose>
<xsl:when test="number(substring-before(@_DCDateCreated,'/')) <= 9">0<xsl:value-of select="substring-before(@_DCDateCreated,'/')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="substring-before(@_DCDateCreated,'/')"/></xsl:otherwise>
</xsl:choose>
/
<xsl:choose>
<xsl:when test="number(substring-before(substring-after(@_DCDateCreated,'/'),'/')) <= 9">0<xsl:value-of select="substring-before(substring-after(@_DCDateCreated,'/'),'/')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="substring-before(substring-after(@_DCDateCreated,'/'),'/')"/></xsl:otherwise>
</xsl:choose>
Corrigindo este POST =]
Abaixo vocês vão ver toda uma choradeira de minha parte e uma baita gambiarra.
Porém existe um forma elegante sim de resolver este problema.
É essa:
<xsl:value-of select="ddwrt:FormatDateTime(string(@Data),1046,'dd/MM')"/>
Abaixo uma pequena gambiarra criada por mim para exibir a data no formato DD/MM, tive que fazer isto, pois a função nativa do SharePoint (ddwrt:FormatDate) não oferece este formato.
Abraços,
Leonardo
<xsl:choose>
<xsl:when test="number(substring-before(@_DCDateCreated,'/')) <= 9">0<xsl:value-of select="substring-before(@_DCDateCreated,'/')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="substring-before(@_DCDateCreated,'/')"/></xsl:otherwise>
</xsl:choose>
/
<xsl:choose>
<xsl:when test="number(substring-before(substring-after(@_DCDateCreated,'/'),'/')) <= 9">0<xsl:value-of select="substring-before(substring-after(@_DCDateCreated,'/'),'/')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="substring-before(substring-after(@_DCDateCreated,'/'),'/')"/></xsl:otherwise>
</xsl:choose>
Marcadores:
MOSS 2007,
Sharepoint,
WSS 3.0,
XSL
quinta-feira, 15 de maio de 2008
Evitar os cabelos brancos gerados CAML
Olá Amigos,
No link abaixo vocês vão encontrar um aplicativo que torna visual a criação das querys caml.
http://www.u2u.info/SharePoint/U2U%20Community%20Tools/Forms/AllItems.aspx
Abraços,
Maca
No link abaixo vocês vão encontrar um aplicativo que torna visual a criação das querys caml.
http://www.u2u.info/SharePoint/U2U%20Community%20Tools/Forms/AllItems.aspx
Abraços,
Maca
Marcadores:
CAML,
CAML SPList Sharepoint WSS MOSS,
MOSS 2007,
WSS 3.0
Assinar:
Postagens (Atom)