Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SPS2003] Services WEB vs classes du modèle objet pour WebParts

5 réponses
Avatar
Jacques
Bonjour,

J'ai déjà fais une webpart qui permet d'aller chercher des informations sur
l'utilisateurs courant dans AD en lien avec une BD SQL et cela fonctionne
bien.

Maintenant, je veux faire une webpart qui va aller chercher de l'information
à l'intérieur même de sharepoint portal au travers de ses zones. Je peux
utiliser les services web ou le modèle objet .

Laquelle de ces deux méthodes me conseillez-vous et pourquoi ?

Merci d'avance, Jacques.

5 réponses

Avatar
Pierre Vivier-Merle
Bonjour Jacques,

Il y a plusieurs options en effet :

. L'option web service permet d'accéder aux données des zones même si le
webpart a été déployé sur un autre service sharepoint ou un autre virtual
server.

. L'option modèle objet ne permet d'accéder aux informations que si celui-ci
tourne dans le contexte du sharepoint requêté donc sur le même virtual
server.

Le webservice sera par contre moins performant que le modèle objet et expose
moins de fonctions.

Quelle est le type d'information que vous souhaitez récupérer ?

Cordialement,
Pierre
Venez visiter mon tout nouveau blog : http://blogs.developpeur.org/pierre !


"Jacques" a écrit dans le message de
news:
Bonjour,

J'ai déjà fais une webpart qui permet d'aller chercher des informations
sur
l'utilisateurs courant dans AD en lien avec une BD SQL et cela fonctionne
bien.

Maintenant, je veux faire une webpart qui va aller chercher de
l'information
à l'intérieur même de sharepoint portal au travers de ses zones. Je peux
utiliser les services web ou le modèle objet .

Laquelle de ces deux méthodes me conseillez-vous et pourquoi ?

Merci d'avance, Jacques.


Avatar
Jacques
Bonjour Pierre,

Merci pour vos lumières, je vais donc continuer avec le modèle objet.

Le but de ma webpart est finalement de simuler une liste groupée mais dans
laquelle je peux paramétriser un filtre sur le groupe. (J'ai déjà un post sur
ce sujet intitulé "Filtre sur listes de portail ?")

Dans mon entreprise, chaque division (ou département) a une zone dans
laquelle elle peut publier divers documents, nouvelles, etc. Ces zones se
retrouvent sous Thèmes - Divisions - Informatique, Ress. humaine, Paie,
Finance, etc.

Maintenant, sous Thème, je veux permettre de retrouver ces documents de
façon thématique, et de plus, je veux que ces zones soit populer
automatiquement. (personne n'a de droits autre que lecteurs dans ces zones).

Par exemple, je voudrais créer une zone traitant uniquement des listes
ayant comme groupe "Formulaire" et regrouper automatiquement tout les
formulaires de l'entreprise à cet endroit. Je n'ai qu'a y déposer ma webpart
avec un parametre de filtre sur "Formulaire" et elle se chargera d'aller
chercher l'information dans les sous-zones de divisions.

C'est pour permettre aux usagers de retrouver les formulaires qui leurs sont
destinés de plusieurs façons. Soit en utilisant les zones des départements où
ces formulaires sont publiés ou soit en utilisant ces zones thématiques,
comme une zone "Formulaires" qui irait puiser toutes les listes de groupe
'Formulaire' dans les sous-zones de Division (l'alimentation de la zone se
fait donc automatiquement et je n'ai pas besoin de gérer des droits pour
plusieurs responsables dans cette zone).

Cela permet de résoudre un problème: Certains usagers veulent trouver leurs
formulaires par département et d'autres ne savent pas quel département est
responsable du formulaire qu'ils recherchent. Exemple: Le formulaire de
réclamation du compte de dépense....département de la paie ou celui des
finances ?

Le même problème se pose aussi à d'autre niveau que celui des formulaires.
Les politiques internes sont de responsabilités de divers départements mais
nous voudrions aussi les regrouper dans une seule zones.

Merci encore.

Jacques





"Pierre Vivier-Merle" a écrit :

Bonjour Jacques,

Il y a plusieurs options en effet :

.. L'option web service permet d'accéder aux données des zones même si le
webpart a été déployé sur un autre service sharepoint ou un autre virtual
server.

.. L'option modèle objet ne permet d'accéder aux informations que si celui-ci
tourne dans le contexte du sharepoint requêté donc sur le même virtual
server.

Le webservice sera par contre moins performant que le modèle objet et expose
moins de fonctions.

Quelle est le type d'information que vous souhaitez récupérer ?

Cordialement,
Pierre
Venez visiter mon tout nouveau blog : http://blogs.developpeur.org/pierre !


"Jacques" a écrit dans le message de
news:
> Bonjour,
>
> J'ai déjà fais une webpart qui permet d'aller chercher des informations
> sur
> l'utilisateurs courant dans AD en lien avec une BD SQL et cela fonctionne
> bien.
>
> Maintenant, je veux faire une webpart qui va aller chercher de
> l'information
> à l'intérieur même de sharepoint portal au travers de ses zones. Je peux
> utiliser les services web ou le modèle objet .
>
> Laquelle de ces deux méthodes me conseillez-vous et pourquoi ?
>
> Merci d'avance, Jacques.





Avatar
Jacques
Bonjour Renaud,

Merci pour ta suggestion, elle va me permettre de rendre ma webpart plus
performante.

En fait, au début je cherchait au travers les zones via le namespace
Portal.SiteData en filtrant via mon code. Maintenant je vais combiner ta
suggestion avec le modèle objet en utilisant le namespace Portal.Search et
les Query.

Beaucoup plus rapide, code plus léger et en plus,ma Webpart sera plus
polyvalente. Le seul inconvénient est que les mises à jour ne sont plus
effectives immédiatement (indexage), mais ça, je peux vivre avec.

Le moteur de recherche est déjà utilisé, et cela fonctionne très bien. Par
contre, le niveau de connaissances de mes utilisateurs est varié aux
extrèmes. Certains n'ont jamais besoin de formation, ils apprivoisent
l'outils de façon autonome ou avec un peu d'aide et se débrouillent très
bien. À l'autre extrème, il y en a qui ont absolument besoin d'être guider,
ils sont craintif et utilisent toujours l'outils de la même façon. I sont
aussi très sensibles aux modifications dans leurs méthodes de travail.

C'est surtout pour ces derniers utilisateurs que j'ai besoin de cette webpart.

Bonne année à toi aussi !

Jacques


"Renaud Comte" a écrit :

Pour ce genre de besoin je me poserais plutot la question du moteur :)

J'utiliserais plus les requetes du moteur de recherche que le modéle objet
SPS pour iterer le systéme
>>> le search est 1000 fois plus rapide et modulaire mais pas forcement si
simple a froid (comme tout evidemment)

Et bonne année SharePointienne

Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/

> Bonjour Pierre,
>
> Merci pour vos lumières, je vais donc continuer avec le modèle objet.
>
> Le but de ma webpart est finalement de simuler une liste groupée mais
> dans laquelle je peux paramétriser un filtre sur le groupe. (J'ai déjà
> un post sur ce sujet intitulé "Filtre sur listes de portail ?")
>
> Dans mon entreprise, chaque division (ou département) a une zone dans
> laquelle elle peut publier divers documents, nouvelles, etc. Ces zones
> se retrouvent sous Thèmes - Divisions - Informatique, Ress. humaine,
> Paie, Finance, etc.
>
> Maintenant, sous Thème, je veux permettre de retrouver ces documents
> de façon thématique, et de plus, je veux que ces zones soit populer
> automatiquement. (personne n'a de droits autre que lecteurs dans ces
> zones).
>
> Par exemple, je voudrais créer une zone traitant uniquement des listes
> ayant comme groupe "Formulaire" et regrouper automatiquement tout les
> formulaires de l'entreprise à cet endroit. Je n'ai qu'a y déposer ma
> webpart avec un parametre de filtre sur "Formulaire" et elle se
> chargera d'aller chercher l'information dans les sous-zones de
> divisions.
>
> C'est pour permettre aux usagers de retrouver les formulaires qui
> leurs sont destinés de plusieurs façons. Soit en utilisant les zones
> des départements où ces formulaires sont publiés ou soit en utilisant
> ces zones thématiques, comme une zone "Formulaires" qui irait puiser
> toutes les listes de groupe 'Formulaire' dans les sous-zones de
> Division (l'alimentation de la zone se fait donc automatiquement et je
> n'ai pas besoin de gérer des droits pour plusieurs responsables dans
> cette zone).
>
> Cela permet de résoudre un problème: Certains usagers veulent trouver
> leurs formulaires par département et d'autres ne savent pas quel
> département est responsable du formulaire qu'ils recherchent. Exemple:
> Le formulaire de réclamation du compte de dépense....département de la
> paie ou celui des finances ?
>
> Le même problème se pose aussi à d'autre niveau que celui des
> formulaires. Les politiques internes sont de responsabilités de divers
> départements mais nous voudrions aussi les regrouper dans une seule
> zones.
>
> Merci encore.
>
> Jacques
>
> "Pierre Vivier-Merle" a écrit :
>
>> Bonjour Jacques,
>>
>> Il y a plusieurs options en effet :
>>
>> .. L'option web service permet d'accéder aux données des zones même
>> si le webpart a été déployé sur un autre service sharepoint ou un
>> autre virtual server.
>>
>> .. L'option modèle objet ne permet d'accéder aux informations que si
>> celui-ci tourne dans le contexte du sharepoint requêté donc sur le
>> même virtual server.
>>
>> Le webservice sera par contre moins performant que le modèle objet et
>> expose moins de fonctions.
>>
>> Quelle est le type d'information que vous souhaitez récupérer ?
>>
>> Cordialement,
>> Pierre
>> Venez visiter mon tout nouveau blog :
>> http://blogs.developpeur.org/pierre !
>> "Jacques" a écrit dans le message
>> de news:
>>
>>> Bonjour,
>>>
>>> J'ai déjà fais une webpart qui permet d'aller chercher des
>>> informations
>>> sur
>>> l'utilisateurs courant dans AD en lien avec une BD SQL et cela
>>> fonctionne
>>> bien.
>>> Maintenant, je veux faire une webpart qui va aller chercher de
>>> l'information
>>> à l'intérieur même de sharepoint portal au travers de ses zones. Je
>>> peux
>>> utiliser les services web ou le modèle objet .
>>> Laquelle de ces deux méthodes me conseillez-vous et pourquoi ?
>>>
>>> Merci d'avance, Jacques.
>>>





Avatar
Jacques
Ça marche !

Merci à Pierre et Renaud pour vos conseils, je laisse le code de ma WP
ci-dessous au cas où cela interresse quelqu'un....

Jacques
_______________________________________________
'Listes de portail filtrées , WPListeGrpFlt version 1.0

'---------------------------------------------------------------------------------------------
<DefaultProperty("Groupe"), ToolboxData("<{0}:WPListeGrpFlt
runat=server></{0}:WPListeGrpFlt>"), XmlRoot(Namespace:="WPCSMB1")> _
Public Class WPListeGrpFlt
Inherits Microsoft.SharePoint.WebPartPages.WebPart

Private Const _defaultText As String = ""
Private Const _defaultBool As Boolean = True

Dim _text As String = _defaultText
Dim _Bool As Boolean = _defaultBool

<Browsable(True), Category("Comportement"), DefaultValue(_defaultText),
WebPartStorage(Storage.Shared), FriendlyName("Groupe"), Description("Groupe à
filtré")> _
Property [Groupe]() As String
Get
Return _text
End Get

Set(ByVal Value As String)
_text = Value
End Set
End Property
<Browsable(True), Category("Comportement"), DefaultValue(_defaultBool),
WebPartStorage(Storage.Shared), FriendlyName("Séparateur"),
Description("Séparateur de zone")> _
Property [Séparateur]() As Boolean
Get
Return _Bool
End Get

Set(ByVal Value As Boolean)
_Bool = Value
End Set
End Property

Protected Overrides Sub RenderWebPart(ByVal output As
System.Web.UI.HtmlTextWriter)

Dim Contexte As PortalContext = PortalApplication.GetContext()
Dim QP As New QueryProvider(Contexte.SearchApplicationName)

Dim Str As String = "Select ""DAV:href"","
Str += """DAV:displayname"","
Str += """urn:schemas-microsoft-com:publishing:CategoryTitle"","
Str +=
"""urn:schemas-microsoft-com:sharepoint:portal:area:CategoryUrlNavigation"","
Str += """urn:schemas.microsoft.com:fulltextqueryinfo:Description"","
Str += """urn:schemas-microsoft-com:sharepoint:portal:area:Path"","
Str += """DAV:getlastmodified"""
Str += " From Portal_Content..Scope() "
Str += "Where
""urn:schemas-microsoft-com:sharepoint:portal:area:GroupTitle""='" & [Groupe]
& "'"
Str += " AND
((""DAV:contentclass""='urn:content-classes:SPSListing')"
Str += " OR
(""DAV:contentclass""='urn:content-classes:SPSPersonListing')"
Str += " OR
(""DAV:contentclass""='urn:content-classes:SPSTextListing')"
Str += " OR
(""DAV:contentclass""='urn:content-classes:SPSSiteListing'))"
Str += " Order by
""urn:schemas-microsoft-com:publishing:CategoryTitle"","
Str += " ""DAV:displayname"""

Dim DS As DataSet = QP.Execute(Str)
Dim RC As DataRow
Dim URL As String
Dim SwZone As String = ""
Dim Img As String

Str = "<table>"
For Each RC In DS.Tables(0).Rows

If SwZone <> RC(3) Then 'Changement de zone
Str += "<tr><td colspan='7' class='ms-portaltitle'>"
If SwZone <> "" And [Séparateur] Then Str += "<hr>" Else Str
+= "<br>"
Str += "<a href='" & RC(4) & "'>" &
SPEncode.HtmlEncode(RC(3)) & "</a></td></tr>"
SwZone = RC(3)
End If

URL = Mid(RC(1), (InStrRev(RC(1), "http:")))

Str += "<tr>"
Str += "<td><a href='" & URL & "'>" & SPEncode.HtmlEncode(RC(2))
& "</a></td>"
Str += "<td>" & SPEncode.HtmlEncode(fNullStr(RC(5))) & "</td>"
Str += "<td>" & SPEncode.HtmlEncode(fNullStr(RC(6))) & "</td>"
Str += "<td>" & SPEncode.HtmlEncode(fNullStr(RC(7))) & "</td>"
Str += "</tr>"

Next
Str += "</table>"
output.Write(Str)

DS.Dispose()

End Sub

Private Function fNullStr(ByVal X As Object) As String
If X Is DBNull.Value Then fNullStr = "" Else fNullStr = X
End Function

End Class

_______________________________________________

"Renaud Comte" a écrit :

Bonne nouvelle au final

Je te rejoins, plus le composant est simple à appréhender par les utilisateurs
plus elle sera utilisé
>>> donc le portail aura plus d'intéret :)

Et bonne année SharePointienne

Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/

> Bonjour Renaud,
>
> Merci pour ta suggestion, elle va me permettre de rendre ma webpart
> plus performante.
>
> En fait, au début je cherchait au travers les zones via le namespace
> Portal.SiteData en filtrant via mon code. Maintenant je vais combiner
> ta suggestion avec le modèle objet en utilisant le namespace
> Portal.Search et les Query.
>
> Beaucoup plus rapide, code plus léger et en plus,ma Webpart sera plus
> polyvalente. Le seul inconvénient est que les mises à jour ne sont
> plus effectives immédiatement (indexage), mais ça, je peux vivre avec.
>
> Le moteur de recherche est déjà utilisé, et cela fonctionne très bien.
> Par contre, le niveau de connaissances de mes utilisateurs est varié
> aux extrèmes. Certains n'ont jamais besoin de formation, ils
> apprivoisent l'outils de façon autonome ou avec un peu d'aide et se
> débrouillent très bien. À l'autre extrème, il y en a qui ont
> absolument besoin d'être guider, ils sont craintif et utilisent
> toujours l'outils de la même façon. I sont aussi très sensibles aux
> modifications dans leurs méthodes de travail.
>
> C'est surtout pour ces derniers utilisateurs que j'ai besoin de cette
> webpart.
>
> Bonne année à toi aussi !
>
> Jacques
>
> "Renaud Comte" a écrit :
>
>> Pour ce genre de besoin je me poserais plutot la question du moteur
>> :)
>>
>> J'utiliserais plus les requetes du moteur de recherche que le modéle
>> objet SPS pour iterer le systéme
>>
>>>>> le search est 1000 fois plus rapide et modulaire mais pas
>>>>> forcement si
>>>>>
>> simple a froid (comme tout evidemment)
>>
>> Et bonne année SharePointienne
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour Pierre,
>>>
>>> Merci pour vos lumières, je vais donc continuer avec le modèle
>>> objet.
>>>
>>> Le but de ma webpart est finalement de simuler une liste groupée
>>> mais dans laquelle je peux paramétriser un filtre sur le groupe.
>>> (J'ai déjà un post sur ce sujet intitulé "Filtre sur listes de
>>> portail ?")
>>>
>>> Dans mon entreprise, chaque division (ou département) a une zone
>>> dans laquelle elle peut publier divers documents, nouvelles, etc.
>>> Ces zones se retrouvent sous Thèmes - Divisions - Informatique,
>>> Ress. humaine, Paie, Finance, etc.
>>>
>>> Maintenant, sous Thème, je veux permettre de retrouver ces documents
>>> de façon thématique, et de plus, je veux que ces zones soit populer
>>> automatiquement. (personne n'a de droits autre que lecteurs dans ces
>>> zones).
>>>
>>> Par exemple, je voudrais créer une zone traitant uniquement des
>>> listes ayant comme groupe "Formulaire" et regrouper automatiquement
>>> tout les formulaires de l'entreprise à cet endroit. Je n'ai qu'a y
>>> déposer ma webpart avec un parametre de filtre sur "Formulaire" et
>>> elle se chargera d'aller chercher l'information dans les sous-zones
>>> de divisions.
>>>
>>> C'est pour permettre aux usagers de retrouver les formulaires qui
>>> leurs sont destinés de plusieurs façons. Soit en utilisant les zones
>>> des départements où ces formulaires sont publiés ou soit en
>>> utilisant ces zones thématiques, comme une zone "Formulaires" qui
>>> irait puiser toutes les listes de groupe 'Formulaire' dans les
>>> sous-zones de Division (l'alimentation de la zone se fait donc
>>> automatiquement et je n'ai pas besoin de gérer des droits pour
>>> plusieurs responsables dans cette zone).
>>>
>>> Cela permet de résoudre un problème: Certains usagers veulent
>>> trouver leurs formulaires par département et d'autres ne savent pas
>>> quel département est responsable du formulaire qu'ils recherchent.
>>> Exemple: Le formulaire de réclamation du compte de
>>> dépense....département de la paie ou celui des finances ?
>>>
>>> Le même problème se pose aussi à d'autre niveau que celui des
>>> formulaires. Les politiques internes sont de responsabilités de
>>> divers départements mais nous voudrions aussi les regrouper dans une
>>> seule zones.
>>>
>>> Merci encore.
>>>
>>> Jacques
>>>
>>> "Pierre Vivier-Merle" a écrit :
>>>
>>>> Bonjour Jacques,
>>>>
>>>> Il y a plusieurs options en effet :
>>>>
>>>> .. L'option web service permet d'accéder aux données des zones même
>>>> si le webpart a été déployé sur un autre service sharepoint ou un
>>>> autre virtual server.
>>>>
>>>> .. L'option modèle objet ne permet d'accéder aux informations que
>>>> si celui-ci tourne dans le contexte du sharepoint requêté donc sur
>>>> le même virtual server.
>>>>
>>>> Le webservice sera par contre moins performant que le modèle objet
>>>> et expose moins de fonctions.
>>>>
>>>> Quelle est le type d'information que vous souhaitez récupérer ?
>>>>
>>>> Cordialement,
>>>> Pierre
>>>> Venez visiter mon tout nouveau blog :
>>>> http://blogs.developpeur.org/pierre !
>>>> "Jacques" a écrit dans le
>>>> message
>>>> de news:
>>>>> Bonjour,
>>>>>
>>>>> J'ai déjà fais une webpart qui permet d'aller chercher des
>>>>> informations
>>>>> sur
>>>>> l'utilisateurs courant dans AD en lien avec une BD SQL et cela
>>>>> fonctionne
>>>>> bien.
>>>>> Maintenant, je veux faire une webpart qui va aller chercher de
>>>>> l'information
>>>>> à l'intérieur même de sharepoint portal au travers de ses zones.
>>>>> Je
>>>>> peux
>>>>> utiliser les services web ou le modèle objet .
>>>>> Laquelle de ces deux méthodes me conseillez-vous et pourquoi ?
>>>>> Merci d'avance, Jacques.
>>>>>





Avatar
Pierre Vivier-Merle
Merci Jacques pour le post : c'est une très bonne démarche de partager ses
retours !

Si je peux me permettre 2-3 remarques :-) (outre le fait qu'en VB .NET, j'ai
un peu du mal ;-), c'est uniquement à titre constructif.

Il est préférable d'utiliser un stringbuilder qu'une concaténation de
string. Il faut bien voir qu'à chaque += il y a 2 nouveaux objet string
créés.
La différence en terme de performance et consommation mémoire peut être
impressionante :
http://www.c-sharpcorner.com/Code/2002/Oct/StringBuilderComp.asp

Il est souvent préférable d'utiliser un htmlTextWriter qui adapte le code
html rendu au navigateur requêtant la page. Cela permet également d'éviter
les oublis de fermeture de tag par exemple

--
Cordialement,
Pierre
Venez visiter mon tout nouveau blog : http://blogs.developpeur.org/pierre !


"Jacques" a écrit dans le message de
news:
Ça marche !

Merci à Pierre et Renaud pour vos conseils, je laisse le code de ma WP
ci-dessous au cas où cela interresse quelqu'un....

Jacques
_______________________________________________
'Listes de portail filtrées , WPListeGrpFlt version 1.0

'---------------------------------------------------------------------------------------------
<DefaultProperty("Groupe"), ToolboxData("<{0}:WPListeGrpFlt
runat=server></{0}:WPListeGrpFlt>"), XmlRoot(Namespace:="WPCSMB1")> _
Public Class WPListeGrpFlt
Inherits Microsoft.SharePoint.WebPartPages.WebPart

Private Const _defaultText As String = ""
Private Const _defaultBool As Boolean = True

Dim _text As String = _defaultText
Dim _Bool As Boolean = _defaultBool

<Browsable(True), Category("Comportement"), DefaultValue(_defaultText),
WebPartStorage(Storage.Shared), FriendlyName("Groupe"),
Description("Groupe à
filtré")> _
Property [Groupe]() As String
Get
Return _text
End Get

Set(ByVal Value As String)
_text = Value
End Set
End Property
<Browsable(True), Category("Comportement"), DefaultValue(_defaultBool),
WebPartStorage(Storage.Shared), FriendlyName("Séparateur"),
Description("Séparateur de zone")> _
Property [Séparateur]() As Boolean
Get
Return _Bool
End Get

Set(ByVal Value As Boolean)
_Bool = Value
End Set
End Property

Protected Overrides Sub RenderWebPart(ByVal output As
System.Web.UI.HtmlTextWriter)

Dim Contexte As PortalContext = PortalApplication.GetContext()
Dim QP As New QueryProvider(Contexte.SearchApplicationName)

Dim Str As String = "Select ""DAV:href"","
Str += """DAV:displayname"","
Str += """urn:schemas-microsoft-com:publishing:CategoryTitle"","
Str + > """urn:schemas-microsoft-com:sharepoint:portal:area:CategoryUrlNavigation"","
Str +=
"""urn:schemas.microsoft.com:fulltextqueryinfo:Description"","
Str += """urn:schemas-microsoft-com:sharepoint:portal:area:Path"","
Str += """DAV:getlastmodified"""
Str += " From Portal_Content..Scope() "
Str += "Where
""urn:schemas-microsoft-com:sharepoint:portal:area:GroupTitle""='" &
[Groupe]
& "'"
Str += " AND
((""DAV:contentclass""='urn:content-classes:SPSListing')"
Str += " OR
(""DAV:contentclass""='urn:content-classes:SPSPersonListing')"
Str += " OR
(""DAV:contentclass""='urn:content-classes:SPSTextListing')"
Str += " OR
(""DAV:contentclass""='urn:content-classes:SPSSiteListing'))"
Str += " Order by
""urn:schemas-microsoft-com:publishing:CategoryTitle"","
Str += " ""DAV:displayname"""

Dim DS As DataSet = QP.Execute(Str)
Dim RC As DataRow
Dim URL As String
Dim SwZone As String = ""
Dim Img As String

Str = "<table>"
For Each RC In DS.Tables(0).Rows

If SwZone <> RC(3) Then 'Changement de zone
Str += "<tr><td colspan='7' class='ms-portaltitle'>"
If SwZone <> "" And [Séparateur] Then Str += "<hr>" Else
Str
+= "<br>"
Str += "<a href='" & RC(4) & "'>" &
SPEncode.HtmlEncode(RC(3)) & "</a></td></tr>"
SwZone = RC(3)
End If

URL = Mid(RC(1), (InStrRev(RC(1), "http:")))

Str += "<tr>"
Str += "<td><a href='" & URL & "'>" &
SPEncode.HtmlEncode(RC(2))
& "</a></td>"
Str += "<td>" & SPEncode.HtmlEncode(fNullStr(RC(5))) & "</td>"
Str += "<td>" & SPEncode.HtmlEncode(fNullStr(RC(6))) & "</td>"
Str += "<td>" & SPEncode.HtmlEncode(fNullStr(RC(7))) & "</td>"
Str += "</tr>"

Next
Str += "</table>"
output.Write(Str)

DS.Dispose()

End Sub

Private Function fNullStr(ByVal X As Object) As String
If X Is DBNull.Value Then fNullStr = "" Else fNullStr = X
End Function

End Class

_______________________________________________

"Renaud Comte" a écrit :

Bonne nouvelle au final

Je te rejoins, plus le composant est simple à appréhender par les
utilisateurs
plus elle sera utilisé
>>> donc le portail aura plus d'intéret :)

Et bonne année SharePointienne

Renaud COMTE [MVP]
---------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/

> Bonjour Renaud,
>
> Merci pour ta suggestion, elle va me permettre de rendre ma webpart
> plus performante.
>
> En fait, au début je cherchait au travers les zones via le namespace
> Portal.SiteData en filtrant via mon code. Maintenant je vais combiner
> ta suggestion avec le modèle objet en utilisant le namespace
> Portal.Search et les Query.
>
> Beaucoup plus rapide, code plus léger et en plus,ma Webpart sera plus
> polyvalente. Le seul inconvénient est que les mises à jour ne sont
> plus effectives immédiatement (indexage), mais ça, je peux vivre avec.
>
> Le moteur de recherche est déjà utilisé, et cela fonctionne très bien.
> Par contre, le niveau de connaissances de mes utilisateurs est varié
> aux extrèmes. Certains n'ont jamais besoin de formation, ils
> apprivoisent l'outils de façon autonome ou avec un peu d'aide et se
> débrouillent très bien. À l'autre extrème, il y en a qui ont
> absolument besoin d'être guider, ils sont craintif et utilisent
> toujours l'outils de la même façon. I sont aussi très sensibles aux
> modifications dans leurs méthodes de travail.
>
> C'est surtout pour ces derniers utilisateurs que j'ai besoin de cette
> webpart.
>
> Bonne année à toi aussi !
>
> Jacques
>
> "Renaud Comte" a écrit :
>
>> Pour ce genre de besoin je me poserais plutot la question du moteur
>> :)
>>
>> J'utiliserais plus les requetes du moteur de recherche que le modéle
>> objet SPS pour iterer le systéme
>>
>>>>> le search est 1000 fois plus rapide et modulaire mais pas
>>>>> forcement si
>>>>>
>> simple a froid (comme tout evidemment)
>>
>> Et bonne année SharePointienne
>>
>> Renaud COMTE [MVP]
>> ---------------------------------
>> http://blogs.developpeur.org/themit/
>> http://blog.spsclerics.com/
>>> Bonjour Pierre,
>>>
>>> Merci pour vos lumières, je vais donc continuer avec le modèle
>>> objet.
>>>
>>> Le but de ma webpart est finalement de simuler une liste groupée
>>> mais dans laquelle je peux paramétriser un filtre sur le groupe.
>>> (J'ai déjà un post sur ce sujet intitulé "Filtre sur listes de
>>> portail ?")
>>>
>>> Dans mon entreprise, chaque division (ou département) a une zone
>>> dans laquelle elle peut publier divers documents, nouvelles, etc.
>>> Ces zones se retrouvent sous Thèmes - Divisions - Informatique,
>>> Ress. humaine, Paie, Finance, etc.
>>>
>>> Maintenant, sous Thème, je veux permettre de retrouver ces documents
>>> de façon thématique, et de plus, je veux que ces zones soit populer
>>> automatiquement. (personne n'a de droits autre que lecteurs dans ces
>>> zones).
>>>
>>> Par exemple, je voudrais créer une zone traitant uniquement des
>>> listes ayant comme groupe "Formulaire" et regrouper automatiquement
>>> tout les formulaires de l'entreprise à cet endroit. Je n'ai qu'a y
>>> déposer ma webpart avec un parametre de filtre sur "Formulaire" et
>>> elle se chargera d'aller chercher l'information dans les sous-zones
>>> de divisions.
>>>
>>> C'est pour permettre aux usagers de retrouver les formulaires qui
>>> leurs sont destinés de plusieurs façons. Soit en utilisant les zones
>>> des départements où ces formulaires sont publiés ou soit en
>>> utilisant ces zones thématiques, comme une zone "Formulaires" qui
>>> irait puiser toutes les listes de groupe 'Formulaire' dans les
>>> sous-zones de Division (l'alimentation de la zone se fait donc
>>> automatiquement et je n'ai pas besoin de gérer des droits pour
>>> plusieurs responsables dans cette zone).
>>>
>>> Cela permet de résoudre un problème: Certains usagers veulent
>>> trouver leurs formulaires par département et d'autres ne savent pas
>>> quel département est responsable du formulaire qu'ils recherchent.
>>> Exemple: Le formulaire de réclamation du compte de
>>> dépense....département de la paie ou celui des finances ?
>>>
>>> Le même problème se pose aussi à d'autre niveau que celui des
>>> formulaires. Les politiques internes sont de responsabilités de
>>> divers départements mais nous voudrions aussi les regrouper dans une
>>> seule zones.
>>>
>>> Merci encore.
>>>
>>> Jacques
>>>
>>> "Pierre Vivier-Merle" a écrit :
>>>
>>>> Bonjour Jacques,
>>>>
>>>> Il y a plusieurs options en effet :
>>>>
>>>> .. L'option web service permet d'accéder aux données des zones même
>>>> si le webpart a été déployé sur un autre service sharepoint ou un
>>>> autre virtual server.
>>>>
>>>> .. L'option modèle objet ne permet d'accéder aux informations que
>>>> si celui-ci tourne dans le contexte du sharepoint requêté donc sur
>>>> le même virtual server.
>>>>
>>>> Le webservice sera par contre moins performant que le modèle objet
>>>> et expose moins de fonctions.
>>>>
>>>> Quelle est le type d'information que vous souhaitez récupérer ?
>>>>
>>>> Cordialement,
>>>> Pierre
>>>> Venez visiter mon tout nouveau blog :
>>>> http://blogs.developpeur.org/pierre !
>>>> "Jacques" a écrit dans le
>>>> message
>>>> de news:
>>>>> Bonjour,
>>>>>
>>>>> J'ai déjà fais une webpart qui permet d'aller chercher des
>>>>> informations
>>>>> sur
>>>>> l'utilisateurs courant dans AD en lien avec une BD SQL et cela
>>>>> fonctionne
>>>>> bien.
>>>>> Maintenant, je veux faire une webpart qui va aller chercher de
>>>>> l'information
>>>>> à l'intérieur même de sharepoint portal au travers de ses zones.
>>>>> Je
>>>>> peux
>>>>> utiliser les services web ou le modèle objet .
>>>>> Laquelle de ces deux méthodes me conseillez-vous et pourquoi ?
>>>>> Merci d'avance, Jacques.
>>>>>