对Document library中对一字段设默认值

SharePoint文档库设置默认所有者
本文介绍如何通过启用SharePoint的事件处理功能并自定义事件接收器,实现在文档上传后自动将文档的所有者设为上传者的操作。具体步骤包括在中央管理启用事件处理功能、配置文档库的高级设置及编写自定义代码。

背景:

   老板对document library提出了个新的要求, 希望在上传document后的表单中owner的默认值为当前上传的人.

分析:

  要实现该功能, MS只能通过Event handle的方法实现了.

实现:
1.  在central administration中启动Event handle功能,  application management - web application general settings ,  在web application列表中选择你需要启动该功能的网站, 然后在backward-compatible event handlers中选择on 选项. 如图:


2.  进入到document library, settings  - document library settings , 选择advanced settings, 在backward-compatible event handler表单中输入assembly name , class name 和 properties的内容, 如图:

其实第二步的内容是关于dll的内容.

3,  关于编译后的dll, 我把它放在C:\WINDOWS\assembly, 应该放在Bin也可以的, 然后修改web.config 中关于<SafeControls> 就可以了.

代码:
实现该功能需要完成IListEventSink接口

Code
    public class DocumentEvent
        :IListEventSink
    
{
        
private string strOwner = "Owner";
        
private string strIsExpired = "IsExpired";

        
public void OnEvent(SPListEvent listEvent)
        
{
            
if (listEvent.Type == SPListEventType.Insert || listEvent.Type == SPListEventType.Update )
            
{
                
try
                
{
                    SPWeb web 
= listEvent.Site.OpenWeb();
                    
if (web.Lists[listEvent.ListID].Fields.ContainsField(strOwner))
                    
{                            
                        SPFile file 
= web.GetFile(listEvent.UrlAfter);
                        
while (file.CheckOutStatus != SPFile.SPCheckOutStatus.None)
                        
{
                            System.Threading.Thread.Sleep(
1000);
                            file 
= web.GetFile(listEvent.UrlAfter);
                        }

                        
if (file.Item[strOwner] == null)
                        
{
                            file.Item[strOwner] 
= file.Author;
                            file.Item.Update();
                        }

                    }

                }

                
catch
                
{
                }

            }

        }

    }

后记:
实现的过程中, 有一些感觉不是很清楚,  比如取currentUser居然为null , 还有其他一些很常用的变量都是null的 , 明显的有值! 搞不清楚.

关于Event handler参考MSDN:  http://msdn2.microsoft.com/en-us/library/ms916857.aspx

转载于:https://www.cnblogs.com/Lordan/archive/2008/01/29/1058021.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值