Соединения WebPart на Sharepoint. - Какой тип использовать? - PullRequest
0 голосов
/ 13 мая 2009

Я написал пример веб-части, которая берет параметр, переданный от другой веб-части, и отображает его значение на метке. Вот код:

[Guid("11a885e9-13e1-4c6e-8045-e5575794ebd8")]
public class DisplayParameter : System.Web.UI.WebControls.WebParts.WebPart
{
    protected Label _label = new Label();
    private string _message; 

    [ConnectionConsumer("Parameter to show")]
    public void GetWPConnectedProviderInterface(IWebPartField connectProvider)
    {
        FieldCallback callback = FieldCallback;
        connectProvider.GetFieldValue(callback);
    }

    private void FieldCallback(object fieldValue)
    {
        _message = (string)fieldValue;
    }

    protected override void OnPreRender(EventArgs args)
    {
        if (string.IsNullOrEmpty(_message))
            _label.Text = "No Message.";
        else
            _label.Text = _message;
    }

    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        Controls.Add(_label);
    }
}

Затем я помещаю WP на страницу и WP DataView, сгенерированный с помощью SPD, чтобы передать имя файла из библиотеки Doc в WP.
В первый раз все работает нормально, но когда я выбираю другой документ, я получаю следующее исключение:

Невозможно привести объект типа «Test.Assembly.SharepointProject.DislayParameter» к типу «Microsoft.SharePoint.WebPartPages.WebPart».

Это заставляет меня думать ... Нужно ли мне наследовать от Microsoft.SharePoint.WebPartPages.WebPart вместо System.Web.UI.WebControls.WebParts.WebPart? И, если да, Каковы недостатки этого, поскольку MSDN и блоггеры предлагают использовать последний класс?

1 Ответ

1 голос
/ 15 мая 2009

Я никогда не соглашался с тем, чтобы не использовать специфичный для SharePoint подкласс webpart - единственная причина, по которой он был бы, - разрешить веб-части запускаться в контейнерах, отличных от SharePoint - теоретически это хорошо, но я никогда не работал над этим проект, в котором маловероятно, что веб-часть будет использоваться вне SharePoint.

Эта проблема также может быть немного омрачена существованием веб-части другого типа в SharePoint 2003, которая предшествует веб-частям .NET 2.0 - это та, которую определенно не следует использовать.

...