可视化webpart基础开发——利用事件接收器实现同步操作两个文档库(添加、删除、修改文档)

可视化webpart基础开发——利用事件接收器实现同步操作两个文档库(添加、删除、修改文档)

分类: SharePoint

1、测试文档库(Doclib1、Doclib2):

技术分享

技术分享

增加一栏“测试栏1”。

2、新建“可视化web部件项目”,添加“解决方案资源管理器”里边选中项目右键“添加”-“新建项”-"事件接收器“

技术分享

如图操作,选择”列表项事件“和”文档库“集相应处理事件

技术分享

技术分享

实现代码:

[html] view plaincopy
 
  1. using System;  
  2. using System.Security.Permissions;  
  3. using Microsoft.SharePoint;  
  4. using Microsoft.SharePoint.Security;  
  5. using Microsoft.SharePoint.Utilities;  
  6. using Microsoft.SharePoint.Workflow;  
  7.   
  8. namespace TestFileReceiver.EventReceiverTest  
  9. {  
  10.     /// <summary>  
  11.     /// 列表项事件  
  12.     /// </summary>  
  13.     public class EventReceiverTest : SPItemEventReceiver  
  14.     {  
  15.        /// <summary>  
  16.        /// 正在添加项.  
  17.        /// </summary>  
  18.        public override void ItemAdding(SPItemEventProperties properties)  
  19.        {  
  20.            base.ItemAdding(properties);  
  21.        }  
  22.   
  23.        /// <summary>  
  24.        /// 正在更新项.  
  25.        /// </summary>  
  26.        public override void ItemUpdating(SPItemEventProperties properties)  
  27.        {  
  28.            base.ItemUpdating(properties);  
  29.        }  
  30.   
  31.        /// <summary>  
  32.        /// 正在删除项.  
  33.        /// </summary>  
  34.        public override void ItemDeleting(SPItemEventProperties properties)  
  35.        {  
  36.            string url = properties.OpenWeb().Url;  
  37.            using (SPSite site = new SPSite(url))  
  38.            {  
  39.                using (SPWeb web = site.OpenWeb())  
  40.                {  
  41.                    if (properties.ListTitle == "Doclib1")//判断操作的文档库是否是Doclib1  
  42.                    {  
  43.                        if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)//判断增加的项的类型是否是文件  
  44.                        {  
  45.                            SPFolder tagetfolder = web.Folders["Doclib2"];  
  46.                            SPFile file = properties.ListItem.File;  
  47.                            string filename = properties.ListItem.Name;  
  48.                            for (int i = 0; i tagetfolder.Files.Count; i++)  
  49.                            {  
  50.                                string spfilename = tagetfolder.Files[i] == null ? "" : tagetfolder.Files[i].Name;     
  51.                                if(filename==spfilename)  
  52.                                {  
  53.                                    tagetfolder.Files[i].Delete();  
  54.                                }  
  55.                            }  
  56.                        }  
  57.                    }  
  58.                }  
  59.            }  
  60.        }  
  61.   
  62.        /// <summary>  
  63.        /// 已添加项.  
  64.        /// </summary>  
  65.        public override void ItemAdded(SPItemEventProperties properties)  
  66.        {  
  67.            string url = properties.OpenWeb().Url;  
  68.            using(SPSite site=new SPSite (url))  
  69.            {  
  70.                using (SPWeb web = site.OpenWeb())  
  71.                {  
  72.                    if (properties.ListTitle == "Doclib1")//判断操作的文档库是否是Doclib1  
  73.                    {  
  74.                        if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)//判断增加的项的类型是否是文件  
  75.                        {  
  76.                            SPFolder tagetfolder = web.Folders["Doclib2"];  
  77.                            SPFile file = properties.ListItem.File;  
  78.                            string filename = properties.ListItem.Name;  
  79.                            file.CopyTo(url+"/"+tagetfolder.Url+"/"+filename);  
  80.                        }  
  81.                    }  
  82.                }  
  83.            }  
  84.        }  
  85.   
  86.        /// <summary>  
  87.        /// 已更新项.  
  88.        /// </summary>  
  89.        public override void ItemUpdated(SPItemEventProperties properties)  
  90.        {  
  91.            string url = properties.OpenWeb().Url;  
  92.            using (SPSite site = new SPSite(url))  
  93.            {  
  94.                using (SPWeb web = site.OpenWeb())  
  95.                {  
  96.                    if (properties.ListTitle == "Doclib1")//判断操作的文档库是否是Doclib1  
  97.                    {  
  98.                        if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)//判断增加的项的类型是否是文件  
  99.                        {  
  100.                            SPFolder tagetfolder = web.Folders["Doclib2"];  
  101.                            SPListItem item = properties.ListItem;  
  102.                            item.CopyTo(url + "/" + tagetfolder.Url + "/" + item.Name);  
  103.                        }  
  104.                    }  
  105.                }  
  106.            }  
  107.        }  
  108.   
  109.        /// <summary>  
  110.        /// 已删除项.  
  111.        /// </summary>  
  112.        public override void ItemDeleted(SPItemEventProperties properties)  
  113.        {  
  114.            base.ItemDeleted(properties);  
  115.        }  
  116.   
  117.   
  118.     }  
  119. }  


部署测试如下

操作Doclib1文档库,上传修改文档

技术分享

查看Doclib2文档库,相应文档也已上传修改

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。