using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace EventReceiverForMoveItem
{
/// <summary>
/// List Item Events
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// An item is being added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
SPSecurity.RunWithElevatedPrivileges(delegate
{
//读取XML文件,可以通过配置来选择通过item的filed判断。//XML文件 <configs><Filed>oneChoice</Filed><SecondFiled>twoChoice</SecondFiled>
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(@"c:\AvePointEvent.config");
System.Xml.XmlNode node = doc.SelectSingleNode("/configs/Filed");
string filed = node.InnerText;
System.Xml.XmlNode nodeSecond = doc.SelectSingleNode("/configs/SecondFiled");
string filedSecond = nodeSecond.InnerText;
SPWeb web = properties.Web;
SPList list = properties.List;
SPListItem item = properties.ListItem;
SPFile file = web.GetFile(item.Url);
string url = string.Empty;
foreach (SPListItem folder in list.Folders)
{
string tempItemFiled = item[filed].ToString().Replace("&", "");
if (folder.Name.Equals(tempItemFiled, StringComparison.CurrentCultureIgnoreCase))
{
if (!filedSecond.Equals(string.Empty))
{
string tempSecondFiled = item[filedSecond].ToString().Replace("&", "");
url = web.Url + "/" + folder.Url + "/" + tempSecondFiled + "/" + file.Name;
break;
}
else
{
url = web.Url + "/" + folder.Url + "/" + file.Name;
break;
}
}
}
try
{
file.MoveTo(url, SPMoveOperations.Overwrite);
}
catch (Exception ex)
{
url = web.Url + "/" + list.RootFolder.Url + "/UnMatch/" + file.Name;
file.MoveTo(url, SPMoveOperations.Overwrite);
}
web.Update();
base.ItemAdded(properties);
});
}
}
}