2010-11-17 80 views
0

Je n'ai jamais travaillé en langage C# auparavant (bien qu'un peu en PHP), mais j'ai été chargé de créer un composant WebPart SharePoint. J'en ai besoin pour tirer des données de liste de SharePoint. Je ne sais vraiment pas où je devrais commencer, alors je commence par faire une vérification pour voir si la liste existe. Cela vérifie simplement la chaîne 'listName' et imprime 'cette liste existe' sur la page.Partage Web de base SharePoint C#

Quelqu'un peut-il m'aider avec mon code et au moins m'a mis sur la bonne voie? Merci.

namespace SlideShowWebPart 
    { 
    public class SlideShowGuide : WebPart 
     { 
     protected override void Render(System.Web.UI.HtmlTextWriter output) 
      { 
      using (SPWeb web = SPContext.Current.Site.OpenWeb("http://www.school.edu")) 
       { 
       string listName = "List123ABC"; 
       var lists = web.Lists; 
       foreach (SPList list in lists) 
        { 
        if (list.Title.Equals(listName)) 
         output.Write("<b>This list exists</b>"); 
        } 
       } 
      } 
     } 
    } 
+0

On dirait que vous vous dirigez dans la bonne direction, est-ce que ce code ne fonctionne pas? – dexter

+0

Il me donne une erreur qui pose un problème, et la page ne charge pas. –

+1

Vous devriez être en mesure de trouver l'erreur exacte soit en creusant à travers les journaux SharePoint ou en modifiant le web.config: http://www.andrewconnell.com/blog/archive/2007/02/01/5935.aspx –

Répondre

1

Ce qui suit peut ne pas être exacte, car il peut être difficile d'identifier la question sans voir une trace de la pile.

SPSite.OpenWeb() prend une URL relative. Essayez de supprimer le nom d'hôte et d'inclure uniquement le chemin d'accès. (Dans votre exemple, aucun chemin n'est répertorié). Si vous essayez d'ouvrir le Web actuel, vous devriez appeler la surcharge sans paramètre.

SPSite.OpenWeb() Documentation

using (SPWeb web = SPContext.Current.Site.OpenWeb()) 
{ 
    // Your Code Here 
} 

Si vous devez utiliser l'URL pour accéder à votre site, vous pouvez passer une url absolue dans le constructeur SPSite.

SPSite(string) Constructor Documentation

using (SPSite site = new SPSite("http://www.school.edu")) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     // Your Code Here 
    } 
} 

Vous pouvez obtenir une référence sur le web actuel comme celui-ci:

SPWeb web = SPContext.Current.Web; 

Veillez à ne pas disposer d'objets que vous obtenez de SPContext.Current, comme cela entraînera des problèmes avec SharePoint.

+1

malheureusement débordement de pile ne devrait pas être un cours de leçon 101, mais plus d'un site de q & a direct, cela favorise la paresse des gens qui ne veulent pas prendre le temps de lire la pléthore d'informations disponibles. –

+0

@Brian, je suis d'accord SO ne devrait pas être un 101, mais il semble que le PO a une question légitime. @Kyle, je pense que vous avez raison. L'erreur provient probablement de l'appel à OpenWeb(). OP devrait mettre un try/catch autour de son code et utiliser l'objet Output pour écrire la trace de la pile. –

+0

J'ai fini par utiliser SPSite au lieu de SPWeb, c'était un problème avec la référence d'URL. @Brian, je suis d'accord aussi que SO ne devrait pas être un cours 101, mais j'ai essayé de faire une question ciblée. J'essaie de ne pas afficher de questions de style basiques et ouvertes, et je ferai plus d'efforts à l'avenir pour ne pas le faire. –

0

Vous pouvez utiliser web.lists ["listName"] pour vérifier l'existence d'une liste. Une fois que vous avez la liste, vous pouvez référencer les éléments via le même concept.

SPList list = web.lists["listName"]; 
list.items["ColumnName"]; // returns the value as a string representation 

Si vous cherchez juste avoir accès aux données de la liste, vous prenez une copie du designer sharepoint, naviguer vers www.endusersharepoint.com et consulter la série d'articles sur l'affichage des données partie Web.

+0

Cela n'aide pas vraiment l'OP à résoudre son problème. –

+0

Je demande à être différent, il a demandé à quelqu'un qui le pointait dans la bonne direction pour accéder aux données de la liste. C'est exactement ce que j'ai fait, sa question a changé après avoir demandé des commentaires. –

+0

Non, il a demandé si quelqu'un pouvait aider à identifier ce qui, dans son code, provoquait l'erreur de la partie Web. –