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

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

增加一栏“测试栏1”。

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

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

实现代码:

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;

namespace TestFileReceiver.EventReceiverTest
{
    /// <summary>
    /// 列表项事件
    /// </summary>
    public class EventReceiverTest : SPItemEventReceiver
    {
       /// <summary>
       /// 正在添加项.
       /// </summary>
       public override void ItemAdding(SPItemEventProperties properties)
       {
           base.ItemAdding(properties);
       }

       /// <summary>
       /// 正在更新项.
       /// </summary>
       public override void ItemUpdating(SPItemEventProperties properties)
       {
           base.ItemUpdating(properties);
       }

       /// <summary>
       /// 正在删除项.
       /// </summary>
       public override void ItemDeleting(SPItemEventProperties properties)
       {
           string url = properties.OpenWeb().Url;
           using (SPSite site = new SPSite(url))
           {
               using (SPWeb web = site.OpenWeb())
               {
                   if (properties.ListTitle == "Doclib1")//判断操作的文档库是否是Doclib1
                   {
                       if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)//判断增加的项的类型是否是文件
                       {
                           SPFolder tagetfolder = web.Folders["Doclib2"];
                           SPFile file = properties.ListItem.File;
                           string filename = properties.ListItem.Name;
                           for (int i = 0; i < tagetfolder.Files.Count; i++)
                           {
                               string spfilename = tagetfolder.Files[i] == null ? "" : tagetfolder.Files[i].Name;   
                               if(filename==spfilename)
                               {
                                   tagetfolder.Files[i].Delete();
                               }
                           }
                       }
                   }
               }
           }
       }

       /// <summary>
       /// 已添加项.
       /// </summary>
       public override void ItemAdded(SPItemEventProperties properties)
       {
           string url = properties.OpenWeb().Url;
           using(SPSite site=new SPSite (url))
           {
               using (SPWeb web = site.OpenWeb())
               {
                   if (properties.ListTitle == "Doclib1")//判断操作的文档库是否是Doclib1
                   {
                       if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)//判断增加的项的类型是否是文件
                       {
                           SPFolder tagetfolder = web.Folders["Doclib2"];
                           SPFile file = properties.ListItem.File;
                           string filename = properties.ListItem.Name;
                           file.CopyTo(url+"/"+tagetfolder.Url+"/"+filename);
                       }
                   }
               }
           }
       }

       /// <summary>
       /// 已更新项.
       /// </summary>
       public override void ItemUpdated(SPItemEventProperties properties)
       {
           string url = properties.OpenWeb().Url;
           using (SPSite site = new SPSite(url))
           {
               using (SPWeb web = site.OpenWeb())
               {
                   if (properties.ListTitle == "Doclib1")//判断操作的文档库是否是Doclib1
                   {
                       if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)//判断增加的项的类型是否是文件
                       {
                           SPFolder tagetfolder = web.Folders["Doclib2"];
                           SPListItem item = properties.ListItem;
                           item.CopyTo(url + "/" + tagetfolder.Url + "/" + item.Name);
                       }
                   }
               }
           }
       }

       /// <summary>
       /// 已删除项.
       /// </summary>
       public override void ItemDeleted(SPItemEventProperties properties)
       {
           base.ItemDeleted(properties);
       }


    }
}


部署测试如下

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值