SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Meeting Workspaces: Zugriff auf Listen der Instanzen

Geprüfte Antwort Dieser Beitrag hat 3 Antworten

Ohne Rang
7 Beiträge
jfischer erstellt 20 Juli 2009 16:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich versuche auf die Aufgabenlisten der einzelnen Termine in einem Arbeitsbereich zuzugreifen!
Aber ich bekomme immer nur die Aufgabenliste des letzten Termins.

SharePoint 2007, VisualStudio 2008

Mit folgendem Code bekomme ich schoneinmal wenigstens eine Liste der verschiedenen Instanzen:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Meetings;
using System.Xml;

namespace ListeninhaltErmittelnOM
{
    class Program
    {
        static void Main(string[] args)
        {
            string serverUrl = "http://fme-vm-mtm";

            using (SPSite site = new SPSite(serverUrl))
            {
                SPWeb web = null;

                List<string> meetingsList = GetMeetingWorkspaces(site);
                SPListItemCollection itemCollection;

                foreach (string meeting in meetingsList)
                {
                    Console.WriteLine(meeting);
                    web = site.OpenWeb("/" + meeting);

                    itemCollection = web.Lists["Besprechungsserie"].Items;

                    foreach (SPListItem item in itemCollection)
                    {
                        int instanceID = (int)item["InstanceID"];

                        if (instanceID > 0)
                        {
                            string url = web.Url + "/default.aspx?InstanceID=" + instanceID.ToString();

                            Console.WriteLine("Title: {0}", item.Title);
                            Console.WriteLine("URL: {0}", url);
                        }
                    }
                }
                web.Dispose();
            }
        }

        static List<string> GetMeetingWorkspaces(SPSite site)
        {
            List<string> result = new List<string>();

            SPWebCollection list = site.RootWeb.Webs;

            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].WebTemplateId == (int)SPWebTemplate.WebTemplate.Meetings)
                {
                    result.Add(list[i].Name.ToString());
                }
            }

            return result;
        }
    }
}

 

 Danke für eure Zeit und Hilfe,

VlG Jens

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 20 Juli 2009 17:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In GetMeetingWorkspaces iterierst Du über site.RootWeb.Webs. Verwende stattdessen site.AllWebs.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
jfischer Als Antwort am 21 Juli 2009 10:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Bringt leider auch nicht den gewünschten Erfolg :(

Folgende Listen sind in dem Arbeitsbereich:
Es müssten aber instgesamt 6 Aufgaben auf 4 Terminen sein.

Arbeitsbereichsseiten (0)
Aufgaben (1)
Besprechungsserie (4)
Dokumentbibliothek (0)
Entscheidungen (0)
Masterseitenkatalog (2)
Tagesordnung (0)
Teilnehmer (1)
Zielsetzungen (0)

Wenn ich versuche den Arbeitsbereich per site.OpenWeb(url + "?instanceId=2") anzusprechen meckert er über das ?

Bitte noch mehr Ideen. Danke.

Ohne Rang
7 Beiträge
jfischer Als Antwort am 21 Juli 2009 14:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Lösung:

            using (SPSite site = SPControl.GetContextSite(Context))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPWebCollection webSites = web.Webs;

                    SPQuery query = new SPQuery();
                    query.MeetingInstanceId = -1;

                    //Auflistung der Meetings
                    for (int a = 0; a < webSites.Count; a++)
                    {
                        if (SPMeeting.IsMeetingWorkspaceWeb(webSites[a]))
                        {
                            writer.WriteLine("{0} ({1})", webSites[a].Title, webSites[a].Lists.Count);

                            SPList list = null;

                            //Auflistung der Listen im Meeting
                            for (int b = 0; b < webSites[a].Lists.Count; b++)
                            {
                                writer.WriteLine("\t{0} ({1})", webSites[a].Lists[b].Title, webSites[a].Lists[b].Items.Count);
                                if (webSites[a].Lists[b].Title == "Aufgaben")
                                {
                                    list = webSites[a].Lists[b];
                                    SPListItemCollection listIC = list.GetItems(query);

                                    for (int c = 0; c < listIC.Count; c++)
                                    {
                                        writer.WriteLine("\t\t{0}", listIC[c].Title);
                                    }
                                }
                            }
                        }
                    }
                }
            }