我在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#)中尝试了它并且它工作正常。
答案 0 :(得分:0)
要检查的几件事情:
尝试输入一些日志以查看它的运行距离。
修改强>
问题可能在这里:
string projectName = properties.ListItem["Project Name"].ToString();
列表项名为“Project Name”,名称中是否有空格?
修改2
根据您的评论,身份验证和连接字符串的组合意味着它是正在对数据库使用的登录用户的安全上下文。检查用户的权利。
答案 1 :(得分:0)
如果事件正在触发并且唯一的方法是pr.DeleteProject(projectName);如果不能正常工作则很难猜出是什么问题。如果它不是保密的,请发布您的代码,然后我会更好地找出问题所在。
顺便问一下,你在列表上调用.Update()方法吗?
请查看此链接http://msdn.microsoft.com/en-us/library/ms431920.aspx
还需要关注的是Item ed和Item ing事件。在Item * ing事件的情况下,最好使用Before或After属性。
此致
Azher Iqbal