• 可视化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文档库,相应文档也已上传修改

  • 相关阅读:
    DOM增删改替换
    DRF框架之序列化器serializers组件详解
    DRF基础操作流程
    DRF框架基础知识储备
    selectors模块
    并发编程——IO模型详解
    高性能web服务器——nginx
    Django中的ORM如何通过数据库中的表格信息自动化生成Model 模型类?
    使用cors完成跨域请求处理
    Flask基础
  • 原文地址:https://www.cnblogs.com/ningang/p/4322057.html
Copyright © 2020-2023  润新知