gpt4 book ai didi

c# - 如何在文档库中创建一个新项目作为文件链接?

转载 作者:太空宇宙 更新时间:2023-11-03 15:28:29 24 4
gpt4 key购买 nike

我必须使用 SPFileCollection.Add 方法将新项目添加到文档库中,但似乎不适合重载此方法。

场景:如果将文件添加到文档库并且具有多选(复选框)的部门选择字段具有选定值,则 itemUpdated 事件应该创建指向所选部门采购文件夹中添加文件的链接。

目前发生了什么:代码将文件添加为新文件而不是链接。

我尝试了以下...

string departments = Convert.ToString(properties.ListItem[Constants.Departments]);
if (!string.IsNullOrEmpty(departments))
{
string[] linkTargets = departments.Split(';', '#');

string purchasingLink = string.Concat(properties.Web.Url, "/", properties.List.RootFolder.Url, "/", Constants.Purchasing, "/");

foreach (string linkTarget in linkTargets)
{
if (!string.IsNullOrEmpty(linkTarget))
{
SPFolder targetFolder = properties.Web.GetFolder(purchasingLink + linkTarget);
SPFileCollection targetLibFiles = properties.List.RootFolder.Files;
targetLibFiles.Add()
string fileUrl = string.Concat(purchasingLink, linkTarget, "/", properties.ListItem.File.Name);

SPFile newFile = targetLibFiles.Add(fileUrl, properties.ListItem.File.OpenBinary());
SPListItem newItem = newFile.Item;

newItem[SPBuiltInFieldId.ContentType] = SPBuiltInContentTypeId.LinkToDocument;

SPFieldUrlValue linkFieldValue = new SPFieldUrlValue();

linkFieldValue.Url = fileUrl;

newItem[SPBuiltInFieldId.URL] = linkFieldValue;

newItem.Update();

}
}
}

更新:所以我检查了blog post由 James Michal Lucas 在他的评论中链接。

我无法复制粘贴它,因为该方法中使用的重载不存在,但它有一些有趣的点,例如哈希表,用于在 Add(...) 方法中提供内容类型。在我的代码中产生的修改:

Hashtable itemProperties = new Hashtable();
SPContentTypeId ctId = SPBuiltInContentTypeId.LinkToDocument;
itemProperties["ContentTypeId"] = ctId.ToString();

string fileUrl = string.Concat(purchasingLink, linkTarget, "/", properties.ListItem.File.Name);

SPFile newFile = targetLibFiles.Add(fileUrl, properties.ListItem.File.OpenBinary(), itemProperties);

执行此命令然后使用 powershell 检查新项目的内容类型显示:
PS C:\Users\xy> $file.Item.ContentType.Name
链接到文档

但是删除原始文件并不会禁用“链接”。它仍然可以正常工作。所以它毕竟不是链接。

最佳答案

我设法通过 this 找到了解决方案邮政。
简而言之:
直接添加 SPLink 似乎是不可能的,你必须伪造它。该帖子描述了如何创建 .aspx 文件,sharepoint 在使用 GUI 添加链接时将生成该文件。然后,此文件将作为新项目添加到库中并代表链接。

关于c# - 如何在文档库中创建一个新项目作为文件链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com