Procedimiento para trabajar con acciones personalizadas de usuario
Última modificación: sábado, 30 de abril de 2011
Hace referencia a: SharePoint Foundation 2010
En este artículo
Agregar una acción personalizada de usuario para elementos de lista
Modificación de una acción personalizada de usuario
Agregar una acción de usuario personalizada a las acciones del sitio de un sitio web
Disponible en SharePoint Online
Puede usar el modelo de objetos cliente para agregar acciones personalizadas a la interfaz de usuario. La propiedad UserCustomActions devuelve la colección de acciones personalizadas para una colección de sitios, sitio web o lista. Para crear una acción personalizada en una de estas colecciones, llame al método Add() (JavaScript: add()) de la clase UserCustomActionCollection (JavaScript: UserCustomActionCollection). Establezca propiedades para la nueva acción en el objeto UserCustomAction devuelto (JavaScript: UserCustomAction) y, a continuación, llame al método Update() (JavaScript: update()) antes de ejecutar la consulta mediante la llamada a los métodos ExecuteQuery() o ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)). La selección de ubicación de una acción personalizada de usuario se puede determinar mediante la ubicación de su espacio de nombres, grupo de acciones personalizadas y secuencia en relación a otras acciones personalizadas de usuario. Para obtener una tabla con una lista de posibles valores para ubicaciones y grupos de acciones personalizadas, vea Ubicaciones e identificadores de acciones personalizadas predeterminadas.
Agregar una acción personalizada de usuario para elementos de lista
En el siguiente ejemplo se agrega una acción personalizada al menú desplegable que se muestra para elementos de lista. Para ubicar la nueva acción en el menú, la propiedad Location (JavaScript: location) especifica EditControlBlock, la propiedad Sequence (JavaScript: sequence) especifica el orden de selección de ubicaciones en relación a otras acciones personalizadas de usuario, y la propiedad Url (JavaScript: url) especifica una ruta de acceso absoluta a una página que define la acción. En el ejemplo se supone que existe un archivo .aspx ubicado en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS.
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());
}
Modificación de una acción personalizada de usuario
En el siguiente ejemplo se recupera una acción de la colección de acciones personalizadas de usuario para el menú desplegable de elementos de una lista y se actualiza la acción personalizada para que incluya un icono que represente la acción en el menú. En el ejemplo se supone que existe un archivo de imagen de icono ubicado en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\IMAGES.
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());
}
Agregar una acción de usuario personalizada a las acciones del sitio de un sitio web
La creación de una acción personalizada de usuario en el menú Acciones del sitio de un sitio web es similar a la creación de una acción para elementos de lista: puede llamar al método Add() (JavaScript: add()), establecer las propiedades para la acción y, a continuación, llamar a Update() (JavaScript: update()). En el siguiente ejemplo se especifica Microsoft.SharePoint.StandardMenu para Location (JavaScript: location), y SiteActions para Group (JavaScript: group), para colocar la nueva acción en el menú Acciones del sitio. El valor de Sequence (JavaScript: sequence) especifica 101, de modo que la acción aparecerá debajo de una acción cuyo número de secuencia sea 100. En el ejemplo se supone que existe un archivo .aspx ubicado en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS.
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());
}
Para obtener más información y ejemplos sobre el trabajo con objetos cliente dentro del contexto del modelo de objetos Silverlight de Microsoft SharePoint Foundation 2010, vea Uso del modelo de objetos Silverlight.
Vea también
Conceptos
Ubicaciones e identificadores de acciones personalizadas predeterminadas
Introducción a la recuperación de datos
Instrucciones del modelo de objetos cliente
Tareas comunes de programación