1

抱歉,如果在其他地方问过这个问题。我已经看过但找不到任何明确的答案。

我正在为 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 在此先感谢。

4

1 回答 1

3

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

创建文件夹后,您可以使用以下代码安全地分配重复标题:

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

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

于 2010-01-12T07:23:39.770 回答