2009-05-13 4 views
0

나는 orher webpart에서 전달 된 매개 변수를 취하여 그 값을 레이블에 표시하는 샘플 webpart를 작성했습니다. 여기 코드는 다음과 같습니다 Sharepoint의 WebPart 연결. - 어떤 유형을 사용해야합니까?

[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는 SPD로 생성 된 DataView를에 WP를 넣어.
이 처음으로 확인 작동하지만 다른 문서를 선택하면, 다음과 같은 예외 얻을 :

유형의 개체를 캐스팅 할 수 없습니다 'Test.Assembly.SharepointProject.DislayParameter' 'Microsoft.SharePoint를 입력 할 수 있습니다. WebPartPages.WebPart '. 이 날 생각하게

... 내가 대신 System.Web.UI.WebControls.WebParts.WebPart의 Microsoft.SharePoint.WebPartPages.WebPart에서 상속해야합니까? 그렇다면, 는 무엇입니까 MSDN 및 블로거가 후자의 클래스를 사용하도록 제안했기 때문에 이러한 단점이 있습니까?

답변

1

webpart의 SharePoint 관련 하위 클래스를 사용하지 않는 것에 대해 필자는 결코 동의하지 않았습니다. 웹 파트가 SharePoint 이외의 컨테이너에서 실행되도록 허용하는 유일한 이유는 이론적으로는 좋지만 한 번도 해본 적이 없습니다. 웹 파트가 SharePoint 외부에서 사용될 가능성이 가장 적은 프로젝트에서

SharePoint 2003에서는 .NET 2.0 웹 파트보다 다른 여러 종류의 웹 파트가 존재하므로이 문제가 다소 흐려질 수 있습니다. 이는 분명히 사용해서는 안되는 문제입니다.

+0

안녕하세요. 나는 그런 식으로 아무런 문제없이 사용했다. 내가 제어 할 수있는 환경을 가지고 있다는 특권 응답 해 주셔서 감사합니다. –

관련 문제