0

我在 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);
            }
         }
}

其中“项目”类具有删除项目的“删除项目”方法。但它什么也没做:(我提到Feature.xml中的一切都很好

我哪里错了?

编辑(来自“答案”):

  1. 是的,我试过这个:

    properties.ErrorMessage = "projectName :" + projectName;
    properties.Cancel = true; 
    

    在 if 子句及其触发的事件中,并正确显示项目名称。

  2. 我是场管理员,并且是完全控制此站点的站点管理员。

  3. DeleteProject 方法是对的,因为我已经在其他一些应用程序(c#)中尝试过它并且它工作正常。

4

2 回答 2

0

如果事件正在触发并且唯一的方法 pr.DeleteProject(projectName); 不能正常工作,那么很难猜出什么是错的。如果它不是机密的,请发布您的代码,然后我将能够更好地找出问题所在。

顺便问一下,你是在列表中调用 .Update() 方法吗?

请查看此链接http://msdn.microsoft.com/en-us/library/ms431920.aspx

还要关心的另一件事是 Item ed 和 Item ing 事件。在 Item*ing 事件的情况下,最好酌情使用 Before 或 After 属性。

问候,

阿泽尔·伊克巴尔

于 2010-05-29T19:28:38.490 回答
0

有几件事要检查:

  • 您的列表项接收器是否连接到列表,以便触发?
  • 触发触发器的用户是否有权删除项目?
  • DeleteProject 中是否有任何编程错误?

尝试输入一些日志以查看它运行了多远。

编辑

问题可能出在这里:

           string projectName = properties.ListItem["Project Name"].ToString(); 

列表项是否名为“项目名称”,名称中有空格?

编辑 2

根据您的评论,身份验证和连接字符串的组合意味着它是用于数据库的登录用户的安全上下文。检查您的用户的权利。

于 2010-05-27T19:37:23.840 回答