我已经开始编写事件处理程序。
起初我将一些项添加到具有硬编码值的列表中。
一切正常,但后来我转而使用properties.OpenWeb()并尝试使用web.Url.ToString()
获取URL - 这样处理程序将无法正常工作且不会发出任何错误。
我是否需要更改任何配置? 你有办法解决我的问题吗?
顺便说一句,如果我尝试获取值,它们都是空的。
我正在使用WSS 3.0和VS 2008,请参阅下面的代码,谢谢!
public override void ItemAdded(SPItemEventProperties properties)
{
SPSite site = new SPSite("http://air_sim:1431/");
SPWeb web = site.RootWeb;
SPList List = web.Lists["Announcements"];
base.ItemAdded(properties);
SPWeb web1 = properties.OpenWeb();
SPListItem newitem = List.Items.Add();
newitem["Title"] = "test";
newitem["Body"] = web1.Url.ToString();
newitem.Update();
}
顺便说一句,我在msdn上找到了这段代码。 它不起作用。没有错误......没什么,而且条件是真的。
public override void ItemAdding(SPItemEventProperties properties)
{
using(SPWeb oWebsite = new SPSite(properties.SiteId).OpenWeb(properties.RelativeWebUrl))
{
SPListItemCollection collItems = oWebsite.Lists[properties.ListTitle].Items;
if (collItems.Count >1)
{
properties.Cancel = true;
properties.ErrorMessage = "Adding items to this list is not supported because it already contains " +
collItems.Count.ToString() + " items.";
}
}
}
答案 0 :(得分:0)
请确保Elements.xml中“receiver”中的“Type”如下:
<Type>ItemAdded</Type>
你的“接收者”节点应该是这样的:
<Receiver>
<Name>ERItemAdded</Name>
<Type>ItemAdded</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>NameSpace.ClassName</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>