根据所创建Item的title自动实现分配到不同的folder下

来源:互联网 发布:感恩节文案 知乎 编辑:程序博客网 时间:2024/06/05 21:00
 

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);

            });

        }

 

    }

}