Sharepoint 2010客户端对象模型 - 获取当前列表名称

6
我想在Sharepoint 2010的功能区菜单中创建一个简单的自定义操作按钮。
我希望它是通用的,不需要硬编码库名称等信息。
如何找到当前正在查看的列表的名称? 我认为这是可能的,而无需从Url解析它。
非常感谢!
2个回答

7

花了一些时间才找到答案,最终我发现可以使用以下Javascript代码获取列表的ID:

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

0

你会在SPContext类中找到它

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

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

要解析URL,您可以使用类似以下的代码:

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

祝你好运


谢谢您的回复,但我需要使用Javascript来完成这个任务。非常抱歉在原帖中没有清楚地说明! - John Mc
嗯,更好的方法是使用代码后端页面提供JavaScript服务。如果您想使用JS来完成,请尝试使用var url = window.location; var urlparts = url.split('/'); - Eric Herlitz
我认为这是不可能的。我的自定义操作JavaScript正在为我的应用程序页面构建查询字符串,然后通过SP模态对话框打开它。我不认为应用程序页面的代码后台将能够使用SPContext访问列表名称,因为它不在列表页面上?将列表名称随查询字符串传递更有意义。 - John Mc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接