2010-01-26 198 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; } 
     } 

但web部件中,我也重寫GetToolParts()方法,如下面我自己的自定義toolpart:

公衆覆蓋toolPart [] GetToolParts(){

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

我需要顯示我的自定義toolpart(RSSCountrySettings)我的自定義索引(RSS列表路徑)根據 catergory設置。

任何想法如何做到這一點,我只能得到一個,但不能同時顯示......?

回答

0

您沒有使用基類的工具部件。試試這個:

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

您需要這樣做的原因是基類會爲您的自定義屬性生成工具部件。但是,您不允許它將該工具部件添加到工具部件集合中。因此,您必須將基類的工具部件作爲集合,然後在其中添加您的工具。這是覆蓋現有方法的危險。請查看this link瞭解更多信息

0

您必須將CustomPropertyToolPart添加到toolParts列表中。像這樣:

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