मुझे अपने इवेंट रिसीवर के साथ एक ही समस्या थी। मैंने ListTemplateId, ListTemplateOwner, और यहां तक कि ListUrl की कोशिश की। मुझे पता था कि सेटिंग्स वैध थीं, लेकिन उन्हें अनदेखा किया जा रहा था और रिसीवर प्रत्येक सूची से जुड़ा हुआ था।
मुझे एक झटका था कि यह एक साइट स्कोप्ड फीचर के भीतर घोषित इवेंट रिसीवर से संबंधित हो सकता है। यह SPEventElement के लिए "documentation" से इसकी पुष्टि होने लगता है:
switch (this.FeatureDefinition.Scope)
{
case SPFeatureScope.Site:
if (this.SiteScopedReceivers())
{
this.UpdateEventReceiversForSite(site, sqlcmdAppendOnly, new SPEventElement.GetSqlToUpdateEventReceiversForSite(this.GetEventReceivers(site.RootWeb).GetSqlToAddEventReceiversToSite));
break;
}
else
{
this.UpdateEventReceiversForWeb(site.RootWeb, sqlcmdAppendOnly, new SPEventElement.GetSqlToUpdateEventReceiversForWeb(this.GetEventReceivers(site.RootWeb).GetSqlToAddEventReceiversToWeb));
break;
}
case SPFeatureScope.Web:
if (this.RootWebOnly && !web.IsRootWeb)
{
ULS.SendTraceTag(1718513714U, (ULSCatBase) ULSCat.msoulscat_WSS_General, ULSTraceLevel.Verbose, "Event Receivers in Feature '{0}' were not activated because current web is not the root web.", new object[1]
{
(object) this.FeatureDefinition.Id.ToString("B")
});
break;
}
else
{
bool templateIdExists;
int templateId;
this.CheckTemplateId(out templateIdExists, out templateId);
if (!templateIdExists)
{
if (this.ListUrl != null)
{
this.UpdateEventReceiversForList(web, sqlcmdAppendOnly, new SPEventElement.GetSqlToUpdateEventReceiversForList(this.GetEventReceivers(web).GetSqlToAddEventReceiversToList), true);
break;
}
else
{
this.UpdateEventReceiversForWeb(web, sqlcmdAppendOnly, new SPEventElement.GetSqlToUpdateEventReceiversForWeb(this.GetEventReceivers(web).GetSqlToAddEventReceiversToWeb));
break;
}
}
else
{
if (this.ListUrl != null)
throw new SPException(SPResource.GetString("ElementHasBothTemplateIdAndUrl", new object[0]));
this.UpdateEventReceiversForListTemplate(templateId, web, sqlcmdAppendOnly, new SPEventElement.GetSqlToUpdateEventReceiversForList(this.GetEventReceivers(web).GetSqlToAddEventReceiversToList));
break;
}
}
}
ऐसा लगता है कि ListTemplateId, ListTemplateOwner, और ListUrl अनदेखी कर रहे हैं साइट सुविधाओं scoped के लिए। जब मैंने अपना इवेंट रिसीवर तत्व वेब स्कोप्ड फीचर में ले जाया, तो रिसीवर केवल वांछित सूची में ही जुड़ा हुआ था।
स्रोत
2011-09-20 17:15:27
क्या आपका मतलब यह है कि प्रत्येक सूची के लिए प्रत्येक सूची आइटम के लिए इसे निकाल दिया जाता है? –
मेरा मतलब है कि जब साइट पर कुछ सूची में कुछ आइटम जोड़ा जाता है (आवश्यक रूप से टेम्पलेट 10200 से बनाई गई सूची नहीं) तो ईवेंट निकाल दिया जाता है। –
अजीब, लगता है जैसे आपने इसे सही किया है .. एक नई साइट संग्रह पर सुविधा को सक्रिय करने का प्रयास करें। बस यह सुनिश्चित करने के लिए कि यह विकास के दौरान सभी सूचियों से जुड़ा हुआ नहीं था। –