Gewusst wie: Erstellen, Aktualisieren und Löschen von Listenelementen
Letzte Änderung: Freitag, 29. April 2011
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Erstellen eines Listenelements
Aktualisieren eines Listenelements
Löschen eines Listenelements
Verfügbar in SharePoint Online
Das Erstellen, Aktualisieren oder Löschen von Listenelementen über das Clientobjektmodell funktioniert ähnlich wie das Ausführen dieser Aufgaben über das Serverobjektmodell. Sie erstellen ein Listenelementobjekt, legen seine Eigenschaften fest und aktualisieren dann das Objekt. Verwenden Sie zum Ändern oder Löschen eines Listenelementobjekts die GetById()-Methode (JavaScript: getById(id)) der ListItemCollection-Klasse (JavaScript: ListItemCollection), um das Objekt zurückzugeben, und legen Sie dann entweder Eigenschaften fest und rufen die Aktualisierung des Objekts auf, das von dieser Methode zurückgegeben wird, oder Sie rufen die eigene Methode des Objekts für die Löschung auf. Anders als beim Serverobjektmodell muss jeder dieser Vorgänge im Clientobjektmodell mit einem Aufruf von ExecuteQuery() oder ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) beendet werden, damit die Änderungen auf dem Server übernommen werden.
Erstellen eines Listenelements
Zum Erstellen von Listenelementen erstellen Sie ein ListItemCreationInformation-Objekt (JavaScript: ListItemCreationInformation), legen seine Eigenschaften fest, und übergeben es als Parameter an die AddItem(ListItemCreationInformation)-Methode (JavaScript: addItem(parameters)) der List-Klasse (JavaScript: List). Legen Sie Eigenschaften für das von dieser Methode zurückgegebene Listenelementobjekt fest, und rufen Sie dann Update() (JavaScript: update()) auf, wie im folgenden Beispiel dargestellt.
using System;
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateListItem
{
static void Main()
{
string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
ListItem oListItem = oList.AddItem(itemCreateInfo);
oListItem["Title"] = "My New Item!";
oListItem["Body"] = "Hello World!";
oListItem.Update();
clientContext.ExecuteQuery();
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class CreateListItem
Shared Sub Main ()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oList As SP.List = clientContext.Web.Lists.GetByTitle("Announcements")
Dim itemCreateInfo As New ListItemCreationInformation()
Dim oListItem As ListItem = oList.AddItem(itemCreateInfo)
oListItem("Title") = "My New Item!"
oListItem("Body") = "Hello World!"
oListItem.Update()
clientContext.ExecuteQuery()
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';
function createListItem() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('Title', 'My New Item!');
oListItem.set_item('Body', 'Hello World!');
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Item created: ' + oListItem.get_id());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Da im vorherigen Beispiel ein Standardlistenelement erstellt wird, müssen Sie keine Eigenschaften für das ListItemCreationInformation-Objekt (JavaScript: ListItemCreationInformation) festlegen, bevor es an die AddItem(ListItemCreationInformation)-Methode (JavaScript: addItem(parameters)) übergeben wird. Wenn von dem Code jedoch z. B. ein neuer Ordner erstellt werden muss, müssen Sie die UnderlyingObjectType-Eigenschaft (JavaScript: underlyingObjectType) des ListItemCreationInformation-Objekts (JavaScript: ListItemCreationInformation) auf Folder (JavaScript: folder) festlegen.
Weitere Informationen und ein Beispiel zum Erstellen eines Listenelementobjekts im Kontext des Microsoft SharePoint Foundation 2010 Silverlight-Objektmodells finden Sie unter Verwenden des Silverlight-Objektmodells.
Aktualisieren eines Listenelements
Zum Festlegen der meisten Listenelementeigenschaften können Sie einen Spaltenindexer verwenden, um eine Zuweisung zu erstellen, und die Update()-Methode (JavaScript: update()) aufrufen, sodass Änderungen übernommen werden, wenn Sie ExecuteQuery() oder ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) aufrufen. Im folgenden Beispiel wird der Titel des dritten Elements in der Announcements-Liste festgelegt.
using System;
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class UpdateListItem
{
static void Main()
{
string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItem oListItem = oList.Items.GetById(3);
oListItem["Title"] = "My Updated Title.";
oListItem.Update();
clientContext.ExecuteQuery();
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class UpdateListItem
Shared Sub Main ()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oList As List = clientContext.Web.Lists.GetByTitle("Announcements")
Dim oListItem As ListItem = oList.Items.GetById(3)
oListItem("Title") = "My Updated Title."
oListItem.Update()
clientContext.ExecuteQuery()
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';
function updateListItem() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
this.oListItem = oList.getItemById(3);
oListItem.set_item('Title', 'My Updated Title');
oListItem.update();
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Item updated!');
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Löschen eines Listenelements
Rufen Sie zum Löschen eines Listenelements die DeleteObject()-Methode (JavaScript: deleteObject()) für das Objekt auf. Im folgenden Beispiel wird die GetItemById()-Methode (JavaScript: getItemById(id)) verwendet, um das zweite Element aus der Liste zurückzugeben, und anschließend wird das Element gelöscht.
SharePoint Foundation 2010 behält die ganzzahligen IDs der Elemente innerhalb von Auflistungen bei, auch wenn sie gelöscht wurden. Daher kann das zweite Element in einer Liste vielleicht eine andere ID besitzen als 2. Es wird eine Ausnahme vom Typ ServerException zurückgegeben, wenn die DeleteObject()-Methode (JavaScript: deleteObject()) für ein nicht vorhandenes Element aufgerufen wird.
using System;
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class DeleteListItem
{
static void Main()
{
string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
ListItem oListItem = oList.GetItemById(2);
oListItem.DeleteObject();
clientContext.ExecuteQuery();
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class DeleteListItem
Shared Sub Main ()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oList As List = clientContext.Web.Lists.GetByTitle("Announcements")
Dim oListItem As ListItem = oList.GetItemById(2)
oListItem.DeleteObject()
clientContext.ExecuteQuery()
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';
function deleteListItem() {
this.itemId = 2;
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
this.oListItem = oList.getItemById(itemId);
oListItem.deleteObject();
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Item deleted: ' + itemId);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Wenn Sie z. B. die neue Elementanzahl abrufen möchten, die das Ergebnis eines Löschvorgangs ist, schließen Sie einen Aufruf der Update()-Methode (JavaScript: update()) ein, um die Liste zu aktualisieren. Zudem müssen Sie entweder das Listenobjekt oder die ItemCount-Eigenschaft (JavaScript: itemCount) für das Listenobjekt aufrufen, bevor Sie die Abfrage ausführen. Wenn Sie die Anzahl der Listenelemente am Anfang und am Ende abrufen möchten, müssen Sie zwei Abfragen ausführen und die Elementanzahl zweimal zurückgeben, wie es in der folgenden Änderung des vorherigen Beispiels gezeigt wird.
using System;
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class DeleteListItemDisplayCount
{
static void Main()
{
string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(siteUrl);
SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");
clientContext.Load(oList,
list => list.ItemCount);
clientContext.ExecuteQuery();
int startCount = oList.ItemCount;
ListItem oListItem = oList.GetItemById(2);
oListItem.DeleteObject();
oList.Update();
clientContext.Load(oList,
list => list.ItemCount);
clientContext.ExecuteQuery();
int endCount = oList.ItemCount;
Console.WriteLine("Start: {0} End: {1}", startCount, endCount);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class DeleteListItemDisplayCount
Shared Sub Main ()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oList As List = clientContext.Web.Lists.GetByTitle("Announcements")
clientContext.Load(oList, Function(list) list.ItemCount)
clientContext.ExecuteQuery()
Dim startCount As Integer = oList.ItemCount
Dim oListItem As ListItem = oList.GetItemById(2)
oListItem.DeleteObject()
oList.Update()
clientContext.Load(oList, Function(list) list.ItemCount)
clientContext.ExecuteQuery()
Dim endCount As Integer = oList.ItemCount
Console.WriteLine("Start: {0} End: {1}", startCount, endCount)
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';
function deleteListItemDisplayCount() {
this.clientContext = new SP.ClientContext(siteUrl);
this.oList = clientContext.get_web().get_lists().getByTitle('Announcements');
clientContext.load(oList);
clientContext.executeQueryAsync(Function.createDelegate(this, this.deleteItem), Function.createDelegate(this, this.onQueryFailed));
}
function deleteItem() {
this.itemId = 58;
this.startCount = oList.get_itemCount();
this.oListItem = oList.getItemById(itemId);
oListItem.deleteObject();
oList.update();
clientContext.load(oList);
clientContext.executeQueryAsync(Function.createDelegate(this, this.displayCount), Function.createDelegate(this, this.onQueryFailed));
}
function displayCount() {
var endCount = oList.get_itemCount();
var listItemInfo = 'Item deleted: ' + itemId +
'\nStart Count: ' + startCount + ' End Count: ' + endCount;
alert(listItemInfo)
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Siehe auch
Konzepte
Richtlinien für das Clientobjektmodell
Gewusst wie: Abrufen von Listenelementen
Allgemeine Programmieraufgaben
Weitere Ressourcen
Codeausschnitt: Erstellen eines Elements in einer externen Liste auf dem Client
Codeausschnitt: Aktualisieren eines Elements in einer externen Liste auf dem Client
Codeausschnitt: Löschen eines Elements in einer externen Liste auf dem Client