sharepoint
Praca z modelem obiektu po stronie serwera zarządzanego (pełne zaufanie)
Szukaj…
Uwagi
Hierarchia pojęciowa
W hierarchii pojęciowej SharePoint zbiory witryn zawierają witryny , które z kolei zawierają listy . Zbiór witryn ( SPSite
) nie ma jawnego interfejsu użytkownika, ale zawsze zawiera jedną witrynę na poziomie głównym (dostępną za RootWeb
właściwości RootWeb
) i ewentualnie dodatkowe podwitryny pod tą witryną. Witryna lub strona internetowa ( SPWeb
) ma interfejs użytkownika i zawiera listy / biblioteki dokumentów ( SPList
), strony ze stronami internetowymi oraz elementy / dokumenty ( SPListItem
).
Ostrzeżenia po stronie serwera
- Aby utworzyć aplikację korzystającą z modelu obiektowego po stronie serwera SharePoint, w projekcie Visual Studio należy dodać odwołanie do zestawu Microsoft.SharePoint, który jest wymieniony w części Zespoły ramowe.
- Aplikacje korzystające z modelu obiektowego po stronie serwera (pełne zaufanie) mogą działać tylko na systemie Windows Server, na którym znajduje się SharePoint.
- Nie można połączyć się z serwerem SharePoint innym niż ten, na którym działa aplikacja.
Hello World (uzyskanie tytułu strony)
SharePoint 2013 i nowsze wersje są tylko 64-bitowe, dlatego też należy zainstalować asembler / program dla procesora 64-bitowego.
Zaraz po utworzeniu projektu konieczne jest przełączenie celu platformy z dowolnego procesora na x64, w przeciwnym razie wystąpi błąd.
using System;
using Microsoft.SharePoint;
namespace StackOverflow
{
class Samples
{
static void Main()
{
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
Console.WriteLine("Title: {0} Description: {1}", web.Title, web.Description);
}
}
}
}
Pętla przez całą farmę SharePoint
Za pomocą programu PowerShell wykonanego z serwera SharePoint Web Server:
$wacoll = get-spwebapplication
foreach($wa in $wacoll){
if($wa.IsAdministrationWebApplication -eq $false){
foreach($site in $wa.Sites){
foreach($web in $site.AllWebs){
# your code here
$web.Dispose()
}
$site.Dispose()
}
}
}
Pobierz elementy listy
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Some list"];
// It is always better and faster to query list items with GetItems method with
// empty SPQuery object than to use Items property
SPListItemCollection items = list.GetItems(new SPQuery());
foreach (SPListItem item in items)
{
// Do some operation with item
}
}
Pobierz elementy za pomocą stronicowania
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Some list"];
SPQuery query = new SPQuery()
{
RowLimit = 100
};
do
{
SPListItemCollection items = list.GetItems(query);
foreach (SPListItem item in items)
{
// Do some operation with item
}
// Assign current position to SPQuery object
query.ListItemCollectionPosition = items.ListItemCollectionPosition;
} while (query.ListItemCollectionPosition != null);
}
Uzyskaj listę według adresu URL
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
string listUrl = string.Format("{0}{1}", web.ServerRelativeUrl, "Lists/SomeList");
SPList list = web.GetList(listUrl);
}
Tworzenie elementu listy
Podczas tworzenia nowego elementu listy jego pola można ustawić za pomocą składni podobnej do tablic łańcuchowych. Zauważ, że te pola nie są tworzone w locie i są zdefiniowane przez schemat listy. Te pola (lub kolumny) muszą istnieć na serwerze, w przeciwnym razie tworzenie się nie powiedzie. Wszystkie elementy listy będą miały pole Tytuł. Niektóre listy mogą zawierać wymagane pola, które należy wypełnić, zanim element zostanie opublikowany na liście.
W tym przykładzie lista korzysta z szablonu Ogłoszenia. Oprócz pola tytułu lista zawiera pole Treść, w którym będzie wyświetlana zawartość ogłoszenia na liście.
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Announcements"];
SPListItem item = list.AddItem();
item[SPBuiltInFieldId.Title] = "My new item";
item[SPBuiltInFieldId.Body] = "Hello World!";
item.Update();
}