Почему я не могу вызвать открытый метод в моей веб-части (элемент управления пользователя) из приемника событий?
Я добавил этот приемник событий (основываясь на том, что нашел здесь):
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace PostTravelWizard.PostTravelItemEventReceiver
{
/// <summary>
/// List Item Events
/// </summary>
public class PostTravelItemEventReceiver : SPItemEventReceiver
{
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
//GeneratePDF(); <= "The name 'GeneratePDF' does not exist in the current context
}
/// <summary>
/// The list received a context event.
/// </summary>
public override void ContextEvent(SPItemEventProperties properties)
{
base.ContextEvent(properties);
// TODO: What "context event" occurs here? To what event should I respond?
}
}
}
Я надеюсь, что когда список обновляется (со стороны клиента /Javascript), затем извлекает эти значения из кода для создания PDF-файла. У меня есть этот код в моем файле *.ascx.cs:
public partial class PostTravelWizardWebPartUserControl : UserControl
{
. . .
public void GeneratePDF(PostTravelData ptd)
{
;//bla
}
... но он не позволяет мне позвонить GeneratePDF()
из приемника событий - это не с
Имя 'GeneratePDF' не существует в текущем контексте
Зачем? Как я могу исправить это asunto?
1 ответ
Решение
GeneratePDF
это метод экземпляра PostTravelWizardWebPartUserControl
учебный класс. Чтобы позвонить с PostTravelItemEventReceiver
Вы должны создать экземпляр PostTravelWizardWebPartUserControl
или пусть метод (GeneratePDF
) быть static
,
Случай 1
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
new PostTravelWizardWebPartUserControl().GeneratePDF();
}
Дело 2
public partial class PostTravelWizardWebPartUserControl : UserControl
{
public static void GeneratePDF(PostTravelData ptd)
{
;//bla
}
}
public class PostTravelItemEventReceiver : SPItemEventReceiver
{
base.ItemAdded(properties);
PostTravelWizardWebPartUserControl.GeneratePDF();
}