Я написал пример веб-части, которая берет параметр, переданный от другой веб-части, и отображает его значение на метке. Вот код:
[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 и блоггеры предлагают использовать последний класс?