2011-09-17 11 views
6

Sto cercando di creare un semplice pulsante di azione personalizzato per il menu Ribbon in Sharepoint 2010.Sharepoint Object Model Cliente 2010 - Prendi il nome della lista corrente

voglio tenerlo generica, in modo che nessun disco di codifica di nomi di librerie ecc.

Come posso trovare il nome della lista corrente visualizzata? Immagino che questo sia possibile senza doverlo analizzare dall'URL.

Grazie mille!

risposta

6

Ci sono voluti un po 'di scavo, ma ho trovato la risposta alla fine. È possibile ottenere l'ID della lista in Javascript utilizzando:

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

Nice, grazie per la condivisione! –

0

Troverete che nella classe SPContext

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

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

Per analizzare l'url è possibile utilizzare qualcosa di simile

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; 
    } 
} 

Buona fortuna

+0

Grazie per la risposta, ma ho bisogno di farlo con Javascript. Davvero dispiaciuto per non averlo detto chiaramente nel mio post originale! –

+0

Hmm il modo migliore sarebbe avere una pagina codebehind che serve il javascript. Se vuoi farlo con js fai qualcosa con var url = window.location; var urlparts = url.split ('/'); –

+0

Non penso sia possibile. La mia azione personalizzata javascript sta costruendo una querystring per la mia pagina dell'applicazione e quindi l'apertura attraverso la finestra di dialogo Modale SP. Non penso che il codice della pagina dell'applicazione sarà in grado di utilizzare SPContext per accedere al nome dell'elenco, perché non si trova su una pagina di elenco? Ha anche più senso avere il nome della lista passato con la querystring –

Problemi correlati