2010-01-26 6 views
0

Je suis en train d'ajouter une propriété personnalisée à mon webpart comme ci-dessous:ajoutant propriété personnalisée Webpart avec une coutume 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; } 
     } 

Mais dans le webpart je PRÉPONDÉRANTS aussi la méthode GetToolParts() comme ci-dessous avec mon toolpart personnalisé:

public override ToolPart [] GetToolParts() {

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

Je dois montrer mon toolpart personnalisé (RSSCountrySettings) et ma propriété personnalisée (RSS Liste Path) sous les paramètres de la catégorie.

Des idées comment je fais cela, je ne peux en obtenir qu'un, mais pas les deux à afficher ...?

Répondre

0

Vous n'utilisez pas les pièces d'outils de la classe de base. Essayez ceci:

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

La raison pour laquelle vous devez faire est que la classe de base génère un toolpart pour votre propriété personnalisée. Cependant, vous ne lui permettez pas d'ajouter cette partie d'outil à la collection toolpart. Donc, vous devez obtenir les pièces d'outils de la classe de base en tant que collection, puis ajoutez les vôtres là aussi. C'est le danger de surcharger une méthode existante. Cochez this link pour en savoir plus

0

Vous devez ajouter CustomPropertyToolPart à la liste toolParts. Comme ceci:

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(); 
    } 
Questions connexes