none
Afficher une liste d'un site parent dans un sous site RRS feed

  • Question

  • Bonjour,

    Je travaille actuellement sur la réalisation d'un site SharePoint 2013, et j'aimerai rendre disponible une liste ce trouvant sur mon site parent, dans un sous site. Mais tout en conservant les fonctionnalité des la liste du site parent (créer,supprimer,modifier un élément).

    J'ai chercher du coté de la webpart de requête de contenu, mais elle ne permet pas grand chose.

    Existerait il une solution ?

    Merci d'avance

    mardi 9 septembre 2014 10:04

Réponses

  • Bonjour

    le webpart de requête de contenu ne fait que "lire" les données. Donc effectivement on ne retrouve pas les features d'un webpart de list classique.

    J'aurais tout de même tendance à partir sur une base de ce type pour l'affichage de la liste, et à rajouter des boutons html + js (genre avec webpart content editor) pour fournir des liens pour new, edit, delete en utilisant l'api de dialog JS de sharepoint pour afficher les formulaires correspondant sur le site parent (il suffit de fournir la bonne url) et peut etre un peu de modèle objet client JS (pour le delete). C'est un peu "de la triche" mais peut suffire peut être pour le besoin ? :)

    Sinon il faut peut etre revoir l'archi de votre contenu pour ne pas avoir besoin de faire ça et de pouvoir travailler sur le site contenant la liste :)


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 15 septembre 2014 19:50

Toutes les réponses

  • Bonsoir,

    Tu peux nous éclairer s'il te plaît sur ce que tu entends par "rendre disponible" ta liste ?

    Entre ton besoin de conserver les fonctionnalités basiques d'une liste (CRUD) qui me fait penser que tu veux avoir plutôt un template de liste et ta recherche d'un composant Web Part pour faire du requêtage , je n'arrive pas à clairement voir si ce qui t'intéresse est le fond (configuration de ta liste) ou la forme (contenu que tu veux remonter un niveau parent uniquement ).

    Un autre point , je suppose que tu es sur du OnPremise. Tu as quel type de SharePoint : Standard ou Entreprise ? 

    Je pars de l'hypothèse que tu souhaites plutôt faire du requêtage et dans ce cas tu peux très bien utiliser le composant Web Part de requête de contenu que tu peux personnaliser (développement) . Si tu es sur une version SharePoint Entreprise, la meilleur solution reste le composant Web Part de recherche de contenu.

    Tiens nous au courant si cela peut t'aider

    Bon courage


    Mutandis mutatis

    • Proposé comme réponse Mahori jeudi 11 septembre 2014 20:28
    mardi 9 septembre 2014 17:06
  • Bonjour,

    Est ce que vous avez essayé la WebPart XsltListViewWebPart?

    vous pouvez l'ajouter directement dans une page

    <WebPartPages:XsltListViewWebPart ID="XsltListViewWebPart2" 
                            runat="server" ListUrl="Lists/PublicDocuments" IsIncluded="True" NoDefaultStyle="TRUE" Title="Public Documents" PageType="PAGE_NORMALVIEW" FrameType="None" Default="False" ViewContentTypeId="0x" ExportMode="All" ExportControlledProperties="true">
    </WebPartPages:XsltListViewWebPart>


    Ou par code 

    using (SPSite site = new SPSite(SPContext.Current.Site.Url))
    {
        using (SPWeb web = site.OpenWeb())
        {
            SPList list = web.Lists["Tracker"];
            XsltListViewWebPart XsltListViewWebPart1 = new XsltListViewWebPart();
    XsltListViewWebPart1.WebId = web.ID XsltListViewWebPart1.ListId = list.ID; SPView lstview = list.DefaultView; XsltListViewWebPart1.Toolbar = ""; StringBuilder xml = new StringBuilder(); xml.Append("<View Name='" + list.DefaultView.ID.ToString("B").ToString().ToUpper(CultureInfo.InvariantCulture) + "' TabularView='FALSE' MobileView='TRUE' Type='HTML' Hidden='TRUE' DisplayName='' Url='" + Request.Url.ToString() + "' Level='1' BaseViewID='1' ContentTypeID='0x' ImageUrl='/_layouts/images/generic.png'>"); xml.Append("<Query><OrderBy><FieldRef Name='ID'/></OrderBy></Query>"); xml.Append("<ViewFields> <FieldRef Name='LinkTitle'/><FieldRef Name='Edit'/><FieldRef Name='Role'/></ViewFields>"); xml.Append("<RowLimit Paged='TRUE'>20</RowLimit>"); xml.Append("<Aggregations Value='Off'/>"); xml.Append("<Toolbar Type='None'/></View>"); XsltListViewWebPart1.XmlDefinition = xml.ToString();//lstview.GetViewXml(); XsltListViewWebPart1.AllowClose = false; XsltListViewWebPart1.AllowConnect = false; XsltListViewWebPart1.AllowEdit = false; XsltListViewWebPart1.AllowHide = false; XsltListViewWebPart1.AllowMinimize = false; XsltListViewWebPart1.AllowZoneChange = false; XsltListViewWebPart1.ChromeType = PartChromeType.Default; RowLevel_list1.Controls.Add(XsltListViewWebPart1); } }




    Cordialement,
    Ahmed Mehdi
    Technical Manager | PROGED
    Consultant SharePoint Tunisie
    http://www.proged.tn
    • Modifié Ahmed MEHDI jeudi 11 septembre 2014 02:56
    • Proposé comme réponse Ahmed MEHDI vendredi 12 septembre 2014 09:48
    jeudi 11 septembre 2014 02:46
  • Bonjour, non ça ne marche pas ça car il ne fonctionne que avec les listes du site courant, et c'est pas ce qui est demandé :)

    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 15 septembre 2014 19:44
  • Bonjour

    le webpart de requête de contenu ne fait que "lire" les données. Donc effectivement on ne retrouve pas les features d'un webpart de list classique.

    J'aurais tout de même tendance à partir sur une base de ce type pour l'affichage de la liste, et à rajouter des boutons html + js (genre avec webpart content editor) pour fournir des liens pour new, edit, delete en utilisant l'api de dialog JS de sharepoint pour afficher les formulaires correspondant sur le site parent (il suffit de fournir la bonne url) et peut etre un peu de modèle objet client JS (pour le delete). C'est un peu "de la triche" mais peut suffire peut être pour le besoin ? :)

    Sinon il faut peut etre revoir l'archi de votre contenu pour ne pas avoir besoin de faire ça et de pouvoir travailler sur le site contenant la liste :)


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 15 septembre 2014 19:50
  • Bonjour,

    peut-etre ce lien pourrait vous aider : http://sharepointontop.blogspot.be/2012/06/show-listview-webpart-from-parent-site.html 

    Il utilise SharePoint designer pour exporter la webpart et la réutiliser dans le site voulu. (Je ne l'ai pas tester mais ça pourrait aider)


    Best regards, Christopher.
    Blog | Mail
    Please remember to click "Mark As Answer" if a post solves your problem or "Vote As Helpful" if it was useful.
    Why mark as answer?

    jeudi 18 septembre 2014 17:22
  • Bonjour,

    enfaite je l'ai utilisé plusieurs fois pour afficher des listes d'autres site de la même collection de sites :)

    voici un exemple de webpart qui affiche la liste tâche du site parent dans un sous site :

    using System;
    using System.ComponentModel;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.SharePoint.WebPartPages;
    using System.Text;
    
    namespace SharePointProject2.RootWebListViewPart
    {
        [ToolboxItemAttribute(false)]
        public class RootWebListViewPart : Microsoft.SharePoint.WebPartPages.WebPart
        {
            protected override void CreateChildControls()
            {
                using (SPSite site = new SPSite(SPContext.Current.Site.Url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["Tâches"];
                        XsltListViewWebPart XsltListViewWebPart1 = new XsltListViewWebPart();
                        XsltListViewWebPart1.WebId = web.ID;
                        XsltListViewWebPart1.ListId = list.ID; 
                        SPView lstview = list.DefaultView;
                        XsltListViewWebPart1.Toolbar = "";
                        XsltListViewWebPart1.ViewGuid = lstview.ID.ToString("B");
                        XsltListViewWebPart1.AllowClose = false;
                        XsltListViewWebPart1.AllowConnect = false;
                        XsltListViewWebPart1.AllowEdit = false;
                        XsltListViewWebPart1.AllowHide = false;
                        XsltListViewWebPart1.AllowMinimize = false;
                        XsltListViewWebPart1.AllowZoneChange = false;
                        XsltListViewWebPart1.ChromeType = PartChromeType.Default;
                        Controls.Add(XsltListViewWebPart1);
                    }
                }
            }
        }
    }
    


    Cordialement,
    Ahmed Mehdi
    Technical Manager | PROGED
    Consultant SharePoint Tunisie
    http://www.proged.tn

    vendredi 19 septembre 2014 17:57