SharePoint/WSS:修改"创建者"字段?

Mar*_*ark 2 permissions sharepoint wss

全部 -

我正在使用WSS 3.0.目前,人力资源部门会将员工的内部公司简历上传到我们网站上的文档库,但出于隐私原因,我们必须限制对该文档库的访问,这会强制用户在每次想要更新简历时都要通过HR.

我的想法是创建一个启用了附件的列表,允许用户只查看/编辑他们自己的项目,然后授予HR管理所有条目的权限.这适用于HR需要创建初始列表项并附加简历的例外,这意味着列表项将"由{hr}"创建,并且由附加了简历的最终用户不可见/可编辑.

关于我如何允许HR在上传时修改"创建者"字段的任何想法,以便最终用户可以看到并可以编辑他们的简历,或以不同的方式进行此操作?

谢谢!

Col*_*lin 7

创建一个文档库来保存简历.然后给HR部门(SharePoint用户组)"读取/写入所有"库的权限,让其他人读/写你自己的"权利.创建一个名为"Resume"的内容类型,基于以下内容: box文档内容类型.然后将包含简历所关注的Employee(SPUser字段)的字段添加到内容类型(以及所需的任何其他字段,即名称,地址等).在创建listitem时,HR正确填写此内容(填写所需的字段).

然后,编写一个绑定到刚刚创建的内容类型的itemeventreceiver并覆盖ItemUpdated事件.

代码将类似于以下内容:

public override void ItemUpdated(SPItemEventProperties properties)
{
  SPSecurity.RunWithElevatedPrivileges(delegate
  {
    using (SPWeb web = properties.OpenWeb())
    {
       web.AllowUnsafeUpdates = true; 
       var item = web.Lists[properties.ListId].GetItemById(properties.ListItemId);
       if (item != null)
       {
         if (item.Fields.ContainsField("Employee"))
         {
           item["Author"] = item["Employee"]; 
           // Author is the internal name of the Created by field, 
           // always use Internal Names!
           DisableEventFiring();
           item.SystemUpdate();
           EnableEventFiring();
         }
       }
     }
   });
}
Run Code Online (Sandbox Code Playgroud)

您可以使用FeatureReceiver将ItemEventReceiver绑定到内容类型,如下所示:

SPContentType docCt = web.ContentTypes[new SPContentTypeId("CONTENTYPE ID GOES HERE")];
docCt.EventReceivers.Add(SPEventReceiverType.ItemUpdated, "ASSEMBLYNAME, Version=1.0.0.0, Culture=neutral, PublicKeyToken=TOKEN", "FULLY QUALIFIED CLASSNAME");
docCt.Update();
Run Code Online (Sandbox Code Playgroud)