Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SharePoint项目删除evert不起作用_Sharepoint_List_Eventreceiver - Fatal编程技术网

SharePoint项目删除evert不起作用

SharePoint项目删除evert不起作用,sharepoint,list,eventreceiver,Sharepoint,List,Eventreceiver,我在SharePoint中有一个网站,我想从列表中自定义删除。所以,我正在创建 public class ListItemEventReceiver : SPItemEventReceiver { public override void ItemDeleting(SPItemEventProperties properties) { if (properties.ListTitle.Equals("Projects List"))

我在SharePoint中有一个网站,我想从列表中自定义删除。所以,我正在创建

 public class ListItemEventReceiver : SPItemEventReceiver
 {
 public override void ItemDeleting(SPItemEventProperties properties)
        {
            if (properties.ListTitle.Equals("Projects List"))
            {
               Projects pr = new Projects();
               string projectName = properties.ListItem["Project Name"].ToString();
               pr.DeleteProject(projectName);
            }
         }
}
其中“Projects”类具有删除项的“DeleteProject”方法。 但它什么也没做:( 我在Feature.xml中提到了一切都没问题

我错在哪里

编辑(来自“答案”):

  • 是的,我试过这个:

    properties.ErrorMessage = "projectName :" + projectName;
    properties.Cancel = true; 
    
    在if子句和事件中,它将触发并正确显示项目名称

  • 我是服务器场管理员,同时也是站点管理员,完全控制此站点

  • DeleteProject方法这是对的,因为我在其他一些应用程序(c#)中尝试过它,效果很好


  • 有几件事需要检查:

    • 您的列表项接收器是否已连接到列表,以便它触发
    • 触发触发器的用户是否有权删除项目
    • DeleteProject中是否存在任何编程错误
    尝试输入一些日志,看看它运行了多远

    编辑

    问题可能在这里:

               string projectName = properties.ListItem["Project Name"].ToString(); 
    
    列表项是否名为“项目名称”,名称中是否有空格

    编辑2


    从您的评论中,身份验证和连接字符串的组合意味着它是针对数据库使用的登录用户的安全上下文。请检查您用户的权限。

    如果事件正在触发并且唯一的方法是pr.DeleteProject(projectName);工作不正常,则很难猜出哪里出了问题。如果不是机密,请发布您的代码,然后我将能够更好地确定哪里出了问题

    顺便问一下,您正在调用列表中的.Update()方法吗

    请查看此链接

    还有一件事需要注意的是Item和Iteming事件。如果是Item*ing事件,最好使用Before或After属性

    问候,


    Azher Iqbal

    1.是的,我试过:“properties.ErrorMessage=“projectName:”+projectName;properties.Cancel=true在if子句和事件中,它正在激发并正确显示项目名称。2.我是场管理员,并且是站点管理员,完全控制该站点。3.删除项目方法是正确的,因为我在其他应用中尝试过它(c#)它工作正常。我真的不知道…是的,项目名称中有空格…但它工作正常…它只是不执行pr.DeleteProject(projectName);。我认为唯一的问题是用户权限,但添加/更新在用户(管理员)上工作正常我不明白为什么删除不起作用。删除是一个特定的SQL权限,可能是您在网络服务的安全上下文中运行,因此权限减少。我必须说,这是我第一次在SharePoint网站上使用Windows身份验证,我的添加/更新/删除事件接收器功能一切正常.但现在我使用的是基于表单的身份验证,只需添加和更新就可以了…无需删除:(您是否在web.config中使用impersonate=true?