2010-01-08 67 views
1

抱歉,如果这已被要求在其他地方标题,名称和显示名称之间的区别。我看了,但找不到任何明确的答案。的Sharepoint:为库文件夹

我写为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预先感谢。

+0

其实也没什么,SharePoint不能很好地使用这些字段唯一标识列表项。唯一必须唯一的是“ID”字段,该字段与创建的项目分配,并且无法更改。 – 2016-09-13 15:35:46

回答

3

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

您可以放心地asssign重复标题创建文件夹后,使用这段代码:

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

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

+0

非常好!非常感谢你! MS通常会对其技术文档进行过滤,但找到你所阐明的观点的解释几乎是不可能的(至少对于SP2010而言)。 :D – user246091 2010-01-13 20:41:16

+0

其实,这似乎并不奏效......但我认为这是因为SPFolders没有Title属性,而SPListItem的确如此。基本上,我不能做我想要的东西,除非我创建了SPFolder的子类。如果这甚至是可能的。无论哪种方式,问题的答案。干杯。 – user246091 2010-01-13 22:13:11

+0

如果您从我的示例中注意到,实际上newFolder变量是SPListItem对象,而不是SPFolder对象,所以是的,您可以设置Title属性。 顺便说一句,你可以创建自己的ContentType其导出文件夹的内容类型。但令人遗憾的是,您无法从API中继承SPFolder,因为它没有公共构造函数。 – denni 2010-01-19 07:03:14

相关问题