#SPDatasource
Explore tagged Tumblr posts
phorlaville · 12 years ago
Text
List of lists - Sharepoint 2013
Bon. La problématique : Lister sur la home page d'un site sharepoint 2013 la liste des listes de type "Survey", avec un lien vers ces listes.
Après avoir farfouillé du côté des webpart sans succès j'ai décidé de faire ça avec le designer..
Le datasource : <SharePointWebControls:SPDataSource     ID="SPDataSource1"     runat="server"     DataSourceMode="Listoflists"> </SharePointWebControls:SPDataSource>
Rien de bien sorcier... http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spdatasource.datasourcemode.aspx http://solutionizing.net/spdatasource-fields-for-webs-listsoflists/
La grid :
<asp:GridView     ID="GridView1"     runat="server"     DataSourceID="SPDataSource1"     AutoGenerateColumns="False" AllowSorting="True" AllowPaging="True" PageSize="2000" CellPadding="3" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Left" EnableSortingAndPagingCallbacks="True">     <Columns>         <asp:boundfield DataField="__spBaseTemplate" HeaderText="Survey Type">         </asp:boundfield>         <asp:hyperlinkfield DataNavigateUrlFields="__spDefaultViewUrl" DataTextField="__spTitle" HeaderText="Survey Name">         </asp:hyperlinkfield>         <asp:boundfield DataField="__spCreated" HeaderText="Survey Date">         </asp:boundfield>         <asp:boundfield DataField="__spAuthor" HeaderText="Survey Author">         </asp:boundfield>     </Columns> </asp:GridView>
Ça donne ça :
Tumblr media
Le problème : pour filtrer et ordonner les spdatasources, on se sert généralement d'une CAML Query.
Je recommande vivement ce petit outil : CAML Designer
ça devrait donner ça pour le SPDatasource :
<SharePoint:SPDataSource     ID="SPDataSource1"     runat="server"     DataSourceMode="Listoflists"     SelectCommand="<View><ViewFields><FieldRef Name='__spTitle'/><FieldRef Name='__spCreated'/><FieldRef Name='__spBaseTemplate'/><FieldRef Name='__spDefaultViewUrl'/></ViewFields><Query><OrderBy><FieldRef Name='Created' /></OrderBy><Where><Eq><FieldRef Name='__spBaseTemplate' /><Value Type='Text'>Survey</Value></Eq></Where></Query></View>"> </SharePoint:SPDataSource>
Et bien non.... le selectcommand n'est absolument pas pris en compte pour le mode Listoflist...
Résultat : j'obtiens bien une liste de mes listes. De toutes mes listes, non filtrées et non triées par date de création...
Pour le filtrage sur le type "Survey", je fais ça en jQuery : je masque la ligne (TR) si le contenu de la 1ere colonne est "Survey", après avoir créé un div avec id pour englober ma grid. J'en profite pour mettre un peu en forme et masquer la 1ere colonne (type de liste) :
<SharePointWebControls:SPDataSource     ID="SPDataSource1"     runat="server"     DataSourceMode="Listoflists" UseServerDataFormat="True"> </SharePointWebControls:SPDataSource> <div id="surveylist" style="display:none;"> <asp:GridView     ID="GridView1"     runat="server"     DataSourceID="SPDataSource1"     AutoGenerateColumns="False" AllowSorting="True" AllowPaging="True" PageSize="2000" CellPadding="3" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Left" EnableSortingAndPagingCallbacks="True">     <Columns>         <asp:boundfield DataField="__spBaseTemplate" HeaderText="Survey Type">         </asp:boundfield>         <asp:hyperlinkfield DataNavigateUrlFields="__spDefaultViewUrl" DataTextField="__spTitle" HeaderText="Survey Name">         </asp:hyperlinkfield>         <asp:boundfield DataField="__spCreated" HeaderText="Survey Date">         </asp:boundfield>         <asp:boundfield DataField="__spAuthor" HeaderText="Survey Author">         </asp:boundfield>     </Columns> </asp:GridView> </div> <script type="text/javascript"> $(document).ready(function() {   $("tr th:first-child").hide();   $("tr td:first-child").hide();   $("tr td:first-child:not(:contains('Survey'))").closest('tr').hide();   $("#surveylist th").css('text-align','left');   $("#surveylist").show(); }); </script>
Ça donne ça :
Tumblr media
Si jamais quelqu'un a une solution plus "propre", je suis preneur :)
0 notes