2011-09-17 9 views
6

Estoy intentando crear un botón de acción personalizado simple para el menú de la cinta en Sharepoint 2010.Sharepoint Object Model 2010 Cliente - Obtener el nombre de la lista actual

quiero mantenerlo genérico, de modo de codificación sin disco de nombres de bibliotecas, etc.

¿Cómo puedo averiguar el nombre de la lista actual que se está viendo? Me imagino que esto es posible sin tener que analizarlo desde la URL.

¡Muchas gracias!

Respuesta

6

que tomó un poco de excavación, pero he encontrado la respuesta al final. Puede obtener el ID de la lista en Javascript usando:

//Get the Id of the list 
var listId = SP.ListOperation.Selection.getSelectedList(); 
+0

¡Agradable, gracias por compartir! –

0

Usted encontrará que en la clase SPContext

SPList list = SPContext.Current.List; 
string listTitle = list.Title; 

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontext.aspx

Para analizar la URL se puede usar algo como esto

VB.NET

Private Function TryGetListName() As String 
    If String.IsNullOrEmpty(Me.ListName) Then 
     Dim path() As String = Me.Page.Request.Url.AbsolutePath.Trim("/"c).Split("/"c) 
     Dim listName As String = String.Empty 
     For i As Integer = 0 To path.Length - 1 
      If path(i).ToLower = "lists" Then 
       If i < path.Length - 1 Then 
        listName = path(i + 1) 
       End If 
       Exit For 
      End If 
     Next 
     Return listName 
    Else 
     Return Me.ListName 
    End If 
End Function 

C#

private string TryGetListName() 
{ 
    if (string.IsNullOrEmpty(this.ListName)) { 
     string[] path = this.Page.Request.Url.AbsolutePath.Trim('/').Split('/'); 
     string listName = string.Empty; 
     for (int i = 0; i <= path.Length - 1; i++) { 
      if (path[i].ToLower() == "lists") { 
       if (i < path.Length - 1) { 
        listName = path[i + 1]; 
       } 
       break; 
      } 
     } 
     return listName; 
    } else { 
     return this.ListName; 
    } 
} 

Buena suerte

+0

Gracias por su respuesta, pero necesito hacer esto con Javascript. ¡Realmente lo siento por no haber dicho eso claramente en mi publicación original! –

+0

Hmm la mejor manera sería tener una página codebehind que sirva el javascript. Si quieres hacerlo con js haz algo con var url = window.location; var urlparts = url.split ('/'); –

+0

No creo que esto sea posible. Mi acción personalizada javascript es construir una cadena de consulta para mi página de aplicación y luego abrirla a través del diálogo de SP Modal. No creo que el código de la página de la aplicación pueda usar SPContext para acceder al nombre de la lista, porque no está en una página de la lista. También tiene más sentido que el nombre de la lista pase con la querystring –

Cuestiones relacionadas