2010-01-26 9 views
0

나는 다음과 같이 내는 WebPart에 사용자 정의 속성을 추가하려고 해요로는 WebPart합니다 :추가 사용자 정의 속성은 사용자 정의 toolpart

 [Personalizable(PersonalizationScope.Shared)] 
     [WebBrowsable(true)] 
     [System.ComponentModel.Category("Settings")] 
     [WebDisplayName("RSS List Path")] 
     [WebDescription("")] 
     public string RSSListURL 
     { 
      get 
      { 
       if (_myListURL == null) 
       { 
        _myListURL = "http://server2003dev/dev/"; 
       } 
       return _myListURL; 
      } 
      set { _myListURL = value; } 
     } 

그러나는 WebPart에서 나는 또한에 아래로() 메소드를 GetToolParts을 무시하고 내 자신의 사용자 정의 toolpart :

공공 재정의 toolPart [] GetToolParts() 나는 (RSSCountrySettings를) 내 사용자 지정 toolpart를 표시해야 {

return new ToolPart[] { new RSSCountrySettings(), new WebPartToolPart() }; 
} 

내 사용자 정의 (RSS 목록 경로) 아래의 catergory Settings.

어떻게하면 좋을지, 하나만 표시 할 수 있지만 표시 할 수는 없습니다 ...?

답변

0

기본 클래스의 toolparts를 사용하고 있지 않습니다. 대신 다음을 시도하십시오.

public override ToolPart[] GetToolParts() 
    { 
      var result = new List<ToolPart>() ; 
      var toolparts = base.GetToolParts(); 
      result.AddRange(toolparts.ToList()); 
      result.Add(new WebPartToolPart()); 
      return result.ToArray(); 
    } 

이렇게해야하는 이유는 기본 클래스가 사용자 정의 속성에 대한 toolpart를 생성하기 때문입니다. 그러나 toolpart 컬렉션에 해당 toolpart를 추가하는 것을 허용하지 않습니다. 따라서 기본 클래스의 toolpart를 컬렉션으로 가져와야하며 컬렉션의 toolpart도 컬렉션에 추가해야합니다. 기존 방법을 재정의하는 것이 위험합니다. 자세한 내용은 this link을 확인하십시오.

0

toolParts 목록에 CustomPropertyToolPart를 추가해야합니다. 좋아요 :

public override Microsoft.SharePoint.WebPartPages.ToolPart[] GetToolParts() 
    { 
     List<ToolPart> list = new List<ToolPart>(); 
     list.AddRange(base.GetToolParts()); 

     // adds custom controls    
     result.Add(new WebPartToolPart()); 

     // adds default controls for properties marked with [WebBrowsable(true)] 
     list.Add(new CustomPropertyToolPart()); 
     return list.ToArray(); 
    } 
관련 문제