Gewusst wie: Verwenden benutzerdefinierter Aktionen von Benutzern
Letzte Änderung: Samstag, 30. April 2011
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Hinzufügen einer benutzerdefinierten Aktion eines Benutzers für Listenelemente
Ändern einer benutzerdefinierten Aktion eines Benutzers
Hinzufügen einer benutzerdefinierten Aktion eines Benutzers zu den Websiteaktionen für eine Website
Verfügbar in SharePoint Online
Sie können das Clientobjektmodell verwenden, um der Benutzeroberfläche benutzerdefinierte Aktionen hinzuzufügen. Die UserCustomActions-Eigenschaft gibt die Auflistung der benutzerdefinierten Aktionen für eine Websitesammlung, eine Website oder eine Liste zurück. Zum Erstellen einer benutzerdefinierten Aktion in einer dieser Auflistungen rufen Sie die Add()-Methode (JavaScript: add()) der UserCustomActionCollection-Klasse (JavaScript: UserCustomActionCollection) auf. Legen Sie Eigenschaften für die neue Aktion für das zurückgegebene UserCustomAction-Objekt (JavaScript: UserCustomAction) fest, und rufen Sie dann die Update()-Methode (JavaScript: update()) auf, bevor Sie die Abfrage durch Aufrufen der ExecuteQuery()-Methode oder der ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler)-Methode (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) ausführen. Die Platzierung einer benutzerdefinierten Aktion eines Benutzers kann durch ihre Namespaceposition, die Gruppe der benutzerdefinierten Aktionen und die Reihenfolge in Bezug auf andere benutzerdefinierte Aktionen bestimmt werden. Eine Tabelle mit möglichen Werten für Positionen und Gruppen von benutzerdefinierten Aktionen finden Sie unter Benutzerdefinierte Standardaktionsspeicherorte und IDs.
Hinzufügen einer benutzerdefinierten Aktion eines Benutzers für Listenelemente
Im folgenden Beispiel wird dem Dropdownmenü, das für Listenelemente angezeigt wird, eine benutzerdefinierte Aktion eines Benutzers hinzugefügt. Damit die neue Aktion im Menü platziert wird, gibt die Location-Eigenschaft (JavaScript: location) EditControlBlock an, Sequence (JavaScript: sequence) gibt eine Reihenfolge der Platzierung in Bezug auf andere benutzerdefinierten Aktionen eines Benutzers an, und Url (JavaScript: url) gibt einen absoluten Pfad zu einer Seite an, auf der die Aktion definiert wird. In dem Beispiel wird davon ausgegangen, dass eine ASPX-Datei vorhanden ist, die sich im Verzeichnis %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS befindet.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateUserCustomActionList
{
static void Main()
{
string urlWebsite = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(urlWebsite);
Web oWebsite = clientContext.Web;
List oList = oWebsite.Lists.GetByTitle("My List");
UserCustomActionCollection collUserCustomAction = oList.UserCustomActions;
UserCustomAction oUserCustomAction = collUserCustomAction.Add();
oUserCustomAction.Location = "EditControlBlock";
oUserCustomAction.Sequence = 100;
oUserCustomAction.Title = "My First User Custom Action";
oUserCustomAction.Url = urlWebsite + @"/_layouts/MyPage.aspx";
oUserCustomAction.Update();
clientContext.Load(oList,
list => list.UserCustomActions);
clientContext.ExecuteQuery();
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class CreateUserCustomActionList
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oWebsite As Web = clientContext.Web
Dim oList As List = oWebsite.Lists.GetByTitle("My List")
Dim collUserCustomAction As UserCustomActionCollection = oList.UserCustomActions
Dim oUserCustomAction As UserCustomAction = collUserCustomAction.Add()
oUserCustomAction.Location = "EditControlBlock"
oUserCustomAction.Sequence = 100
oUserCustomAction.Title = "My First User Custom Action"
oUserCustomAction.Url = siteUrl + "/_layouts/MyPage.aspx"
oUserCustomAction.Update()
clientContext.Load(oList, Function(list) list.UserCustomActions)
clientContext.ExecuteQuery()
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
function createUserCustomActionList() {
var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
this.oList = oWebsite.get_lists().getByTitle('My List');
var collUserCustomAction = oList.get_userCustomActions();
var oUserCustomAction = collUserCustomAction.add();
oUserCustomAction.set_location('EditControlBlock');
oUserCustomAction.set_sequence(100);
oUserCustomAction.set_title('My First User Custom Action');
oUserCustomAction.set_url(siteUrl + '/_layouts/MyPage.aspx');
oUserCustomAction.update();
clientContext.load(oList, 'Title' ,'UserCustomActions');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Custom action created for ' + this.oList.get_title());}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Ändern einer benutzerdefinierten Aktion eines Benutzers
Im folgenden Beispiel wird eine Aktion aus der Auflistung von benutzerdefinierten Aktionen eines Benutzers für das Dropdownmenü der Elemente in einer Liste abgerufen. Anschließend wird die benutzerdefinierte Aktion dahin gehend aktualisiert, dass sie ein Symbol für die Aktion im Menü enthält. Bei dem Beispiel wird davon ausgegangen, dass eine Bilddatei mit dem Symbol vorhanden ist, die sich im Verzeichnis %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\IMAGES befindet.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class ModifyUserCustomAction
{
static void Main()
{
string urlWebsite = "http://MyServer/sites/SiteCollection";
ClientContext clientContext = new ClientContext(urlWebsite);
Web oWebsite = clientContext.Web;
List oList = oWebsite.Lists.GetByTitle("My List");
UserCustomActionCollection collUserCustomAction = oList.UserCustomActions;
clientContext.Load(collUserCustomAction,
userCustomActions => userCustomActions.Include(
userCustomAction => userCustomAction.Title));
clientContext.ExecuteQuery();
foreach (UserCustomAction oUserCustomAction in collUserCustomAction)
{
if (oUserCustomAction.Title == "My First User Custom Action")
{
oUserCustomAction.ImageUrl = "http://MyServer/_layouts/images/MyIcon.png";
oUserCustomAction.Update();
clientContext.ExecuteQuery();
}
}
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class ModifyUserCustomAction
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oWebsite As Web = clientContext.Web
Dim oList As List = oWebsite.Lists.GetByTitle("My List")
Dim collUserCustomAction As UserCustomActionCollection = oList.UserCustomActions
clientContext.Load(collUserCustomAction, _
Function(userCustomActions) userCustomActions.Include( _
Function(userCustomAction) userCustomAction.Title))
clientContext.ExecuteQuery()
Dim oUserCustomAction As UserCustomAction
For Each oUserCustomAction In collUserCustomAction
If oUserCustomAction.Title = "My First User Custom Action" Then
oUserCustomAction.ImageUrl = "http://MyServer/_layouts/images/MyIcon.png"
oUserCustomAction.Update()
clientContext.ExecuteQuery()
End If
Next oUserCustomAction
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
function modifyUserCustomAction() {
this.clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
this.oList = oWebsite.get_lists().getByTitle('My List');
this.collUserCustomAction = oList.get_userCustomActions();
clientContext.load(oList,'UserCustomActions','Title');
clientContext.executeQueryAsync(Function.createDelegate(this, this.SetImage), Function.createDelegate(this, this.onQueryFailed));
}
function SetImage() {
var customActionEnumerator = collUserCustomAction.getEnumerator();
while (customActionEnumerator.moveNext())
{
var oUserCustomAction = customActionEnumerator.get_current();
if (oUserCustomAction.get_title() == 'My First User Custom Action')
{
oUserCustomAction.set_imageUrl('http://MyServer/_layouts/images/MyIcon.png');
oUserCustomAction.update();
clientContext.load(oUserCustomAction);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
}
}
function onQuerySucceeded() {
alert('Custom action changed for ' + this.oList.get_title());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Hinzufügen einer benutzerdefinierten Aktion eines Benutzers zu den Websiteaktionen für eine Website
Das Erstellen einer benutzerdefinierten Aktion eines Benutzers im Menü Websiteaktionen einer Website ähnelt dem Erstellen einer Aktion für Listenelemente: Sie rufen die Add()-Methode (JavaScript: add()) auf, legen Eigenschaften für die Aktion fest und rufen dann Update() (JavaScript: update()) auf. Im folgenden Beispiel wird Microsoft.SharePoint.StandardMenu für Location (JavaScript: location) und SiteActions für Group (JavaScript: group) angegeben, damit die neue Aktion im Menü Websiteaktionen platziert wird. Der Wert von Sequence (JavaScript: sequence) ist 101, sodass die Aktion unter einer Aktion mit der laufenden Nummer 100 angezeigt wird. Bei dem Beispiel wird davon ausgegangen, dass eine ASPX-Datei vorhanden ist, die sich im Verzeichnis %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS befindet.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateUserCustomActionSite
{
static void Main()
{
string urlWebsite = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(urlWebsite);
Web oWebsite = clientContext.Web;
UserCustomActionCollection collUserCustomAction = oWebsite.UserCustomActions;
UserCustomAction oUserCustomAction = collUserCustomAction.Add();
oUserCustomAction.Location = "Microsoft.SharePoint.StandardMenu";
oUserCustomAction.Group = "SiteActions";
oUserCustomAction.Sequence = 101;
oUserCustomAction.Title = "Website User Custom Action";
oUserCustomAction.Description = "This description appears on the Site Actions menu.";
oUserCustomAction.Url = urlWebsite + @"/_layouts/MyPage.aspx";
oUserCustomAction.Update();
clientContext.Load(oWebsite,
webSite => webSite.UserCustomActions);
clientContext.ExecuteQuery();
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class ModifyUserCustomAction
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim clientContext As New ClientContext(siteUrl)
Dim oWebsite As Web = clientContext.Web
Dim collUserCustomAction As UserCustomActionCollection = oWebsite.UserCustomActions
Dim oUserCustomAction As UserCustomAction = collUserCustomAction.Add()
oUserCustomAction.Location = "Microsoft.SharePoint.StandardMenu"
oUserCustomAction.Group = "SiteActions"
oUserCustomAction.Sequence = 101
oUserCustomAction.Title = "Website User Custom Action"
oUserCustomAction.Description = "This description appears on the Site Actions menu."
oUserCustomAction.Url = siteUrl + "/_layouts/MyPage.aspx"
oUserCustomAction.Update()
clientContext.Load(oWebsite, Function(webSite) webSite.UserCustomActions)
clientContext.ExecuteQuery()
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
function createUserCustomActionSite() {
var clientContext = new SP.ClientContext(siteUrl);
this.oWebsite = clientContext.get_web();
var collUserCustomAction = oWebsite.get_userCustomActions();
var oUserCustomAction = collUserCustomAction.add();
oUserCustomAction.set_location('Microsoft.SharePoint.StandardMenu');
oUserCustomAction.set_group('SiteActions');
oUserCustomAction.set_sequence(101);
oUserCustomAction.set_title('ECMA Website User Custom Action ECMA');
oUserCustomAction.set_description('This description appears on the Site Actions menu.');
oUserCustomAction.set_url(siteUrl + '/_layouts/jstest2.aspx');
oUserCustomAction.update();
clientContext.load(oWebsite, 'Title', 'UserCustomActions');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded(sender, args) {
alert('Custom action created for ' + this.oWebsite.get_title());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Informationen und Beispiele zum Verwenden von Clientobjekten im Kontext des Microsoft SharePoint Foundation 2010 Silverlight-Objektmodells finden Sie unter Verwenden des Silverlight-Objektmodells.
Siehe auch
Konzepte
Benutzerdefinierte Standardaktionsspeicherorte und IDs
Richtlinien für das Clientobjektmodell
Allgemeine Programmieraufgaben