【问题标题】:Sharepoint: difference between Title, Name and DisplayName for library foldersSharepoint:库文件夹的标题、名称和显示名称之间的区别
【发布时间】:2010-01-08 02:45:34
【问题描述】:

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

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

【问题讨论】:

  • 实际上不,Sharepoint 不使用这些字段来唯一标识列表项。唯一必须唯一的是“Id”字段,该字段与创建的项目一起分配,您无法更改它。

标签: sharepoint sharepoint-2010


【解决方案1】:

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

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

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

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

【讨论】:

  • 太棒了!非常感谢您! MS 通常会过度使用其技术的文档,但是要找到对您已阐明的观点的解释几乎是不可能的(至少对于 SP2010 而言)。 :D
  • 实际上,这似乎不起作用......但我认为这是因为 SPFolders 没有 Title 属性,而 SPListItem 有。基本上,除非我创建了 SPFolder 的子类,否则我无法做我想做的事。如果这可能的话。无论哪种方式,问题都得到了回答。干杯。
  • 如果您从我的示例中注意到,实际上 newFolder 变量是一个 SPListItem 对象,而不是 SPFolder 对象,所以是的,您可以设置 Title 属性。顺便说一句,您可以创建自己的 ContentType 派生文件夹内容类型。但遗憾的是,您不能从 API 继承 SPFolder,因为它没有公共构造函数。
  • 对于阅读此答案的其他人,请注意在 SPListItem 对象而不是 SPFolder 对象上调用了“更新”方法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 2013-09-08
  • 2015-10-20
相关资源
最近更新 更多