Sharepoint:库文件夹的Title,Name和DisplayName之间的差异

时间:2010-01-08 02:45:34

标签: sharepoint sharepoint-2010

很抱歉,如果有人在其他地方询问过。我看了,但找不到任何确定的答案。

我正在为SharePoint 2010编写一个需要在文档库中创建文件夹的应用程序;应用程序处理的每个“作业”一个,作为放置作业输出的位置。但是,我遇到文件夹名称冲突的问题。每个“作业”都编码为另一个SharePoint列表中的xml文件。例如,它可能包含一个名为“从docx到pdf.xml”的xml文件。到目前为止,我有应用程序使用作业文件名称减去扩展名在输出列表中创建子文件夹。因此,在这种情况下,名为“从docx到pdf”的文件夹。但是,一段时间后,应用程序可能不得不重新处理完全相同的工作。我希望能够在第一个列表中创建另一个子文件夹,并在浏览器中向用户显示完全相同的名称...

您可以在SharePoint列表中执行此操作吗?看起来普通的SPListItems有Name,DisplayName和Title属性。显然,其中一个必须是唯一的,以便SharePoint可以唯一地标识该项。但是这是什么?这同样适用于列表中的SPFolder项目吗?我想在这里我希望有一些像重复的文件夹显示名称,但唯一的内部名称。你有什么想法怎么做?到目前为止,我糟糕的方法是这样的:

 private SPFolder CreateSubFolder(SPList list, string visibleFolderName)
    {           
        // create a new folder under the root folder
        SPListItem newFolder = list.AddItem("", SPFileSystemObjectType.Folder, visibleFolderName);            
        newFolder.Update();               
        return newFolder.Folder;
    }

这显然不起作用。关于如何改变以具有相同的可见名称但是使用内部名称(可能使用Guids ......)的任何想法?:D提前谢谢。

1 个答案:

答案 0 :(得分:3)

与普通文件系统一样,同一子文件夹下的文件夹必须是唯一的。因此,Add()方法的最后一个参数应该是唯一的,因为它表示文件夹名称。

使用以下代码创建文件夹后,您可以放心地设置重复的标题:

SPListItem newFolder = list.Items.Add("", SPFileSystemObjectType.Folder, uniqueFolderName);
newFolder["Title"] = "New Folder"; // Can be duplicated
newFolder.Update();

现在您将拥有相同标题但名称不同的文件夹。但是,当您尝试从Windows资源管理器或SharePoint默认列表视图中浏览这些文件夹时,它将显示文件夹名称(这是唯一的),而不是标题(您想要的)。因此,您需要创建自定义视图并显示标题字段而不是文件夹名称。