背景我们已经在SharePoint 2007环境中安装了自定义开发的.WSP,并且已经在升级到2010。在升级后,自定义事件触发器不再起作用,因此尝试在2010年进行更新并使其正常工作。但是我遇到了一个问题。原始开发人员不再在这里,而且我很幸运,不必在SP Dev的背景下就可以解决这个问题。
目标创建新列表项时,触发事件。在事件内,使用“项目名称”创建一个共享文件夹并返回url,使用“项目名称”创建一个Wiki页面,并包含共享文档链接,然后将URL返回到Wiki页面。第三部分是使用“新文件夹” URL和“ Wiki页面” URL更新新创建的列表项。
问题我已经完成了前两个部分的工作,但是到目前为止,还无法使用新的链接更新新创建的列表项。我能够获得链接。我已经尝试了所有基本的东西来更新我在网上没有运气的列表。没什么复杂的(或者我认为)。但是下面包含了代码。服务器上未安装VS,因此无法运行调试模式,我无法直接访问服务器。创建项目时,没有客户端/用户错误。尚未找到包含任何日志文件的日志文件,也就是说,如果脚本失败,它会收集错误。
事件的开始
public class CreateWikiAndFolder : Microsoft.SharePoint.SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
try
{
//this.DisableEventFiring();
base.EventFiringEnabled = false;
string sUrlOfWikiPage = string.Empty;
string sUrlOfNewFolder = string.Empty;
string sSubsiteRUL = string.Empty;
string sCurrentItemTitle = properties.ListItem["Title"].ToString();
string sWikiListName = "TR Wikis";
string sDocLibName = "Shared Documents";
string sTRListID = "TR Status";
if (sTRListID.ToUpper().Equals(properties.ListTitle.ToString().ToUpper()))
{
//Create the Folder
sUrlOfNewFolder = CreateFolder(properties.ListItem.Web, sDocLibName, sCurrentItemTitle);
//Create the Wiki
string ItemDispFormUrl = String.Concat(properties.ListItem.Web.Url, "/", properties.ListItem.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url, "?ID=", properties.ListItem.ID.ToString());
sUrlOfWikiPage = CreateWiki(properties.ListItem.Web, sWikiListName, sCurrentItemTitle, ItemDispFormUrl, sUrlOfNewFolder);
//Update the current TR Item
//Have tried. properties.ListItem["WikiURL"] = sUrlOfWikiPage + ", " + "Wiki";
SPListItem myListItem = properties.ListItem;
SPFieldUrlValue shareFolderURLValue = new SPFieldUrlValue();
shareFolderURLValue.Description = "Shared Folder";
shareFolderURLValue.Url = sUrlOfNewFolder ;
myListItem["SharedFolder"] = shareFolderURLValue;
//I've tried each one separate and together to no luck
myListItem.UpdateOverwriteVersion();
myListItem.Update();
//properties.ListItem.UpdateOverwriteVersion();
}
base.EventFiringEnabled = true;
}
}
}
请注意,这是我们升级需要弄清的最后一件事。
myListItem.UpdateOverwriteVersion();
行,并包围了将web.AllowUnsafeUpdates
设置为true
之前更新的项目,然后将其返回到false
。[也请注意,您需要将properties.ListItem
保存到自己的SPListItem
中,然后将其更新与尝试操作properties.ListItem["Attribute"]
处的值,然后更新properties.ListItem.Update
。 SharePoint不允许使用后一种选项,因此您必须保存到独立的SPListItem
,然后修改和更新该选项。这可能不是最佳的SharePoint术语,但这是需要做的。