2011-01-21 131 views
2

我创建了具有一些配置属性的自定义WebPart。这些属性的值是一个网站URL和列表名称。我想显示包含所选网站的所有网站名称和列表的下拉列表。我怎样才能在SharePoint中显示一个属性的自定义编辑器组件?我不想获得默认的文本编辑器。SharePoint中的Web部件的自定义属性编辑器

回答

2

您将需要创建一个自定义ToolPart。这里是一个指南:在你的WebPart代码http://sharepoint-insight.blogspot.com/2008/10/sharepoint-creating-web-part-with.html

基本上你将需要重写GetToolParts功能,并返回一个ToolPart[]

更改您的toolpart构造函数接受SPWeb对象(它传递SPContext.Current.Web对象从Web部件)。要获得列表清单,请在您的工具部分中,在CreateChildControls()方法中创建一个下拉列表。使用您从构造函数中获得的SPWeb对象,您可以使用每个对象来获取当前网站的所有列表。

在您的网络的一部分

所以这样做:

public override ToolPart[] GetToolParts() 
{ 
    ToolPart[] tps = new ToolPart[3]; 

    WebPartToolPart wptp = new WebPartToolPart(); 
    CustomPropertyToolPart cptp = new CustomPropertyToolPart(); 
    tps(0) = cptp; 
    tps(1) = wptp; 
    tps(2) = new ListSelectionToolPart(SPContext.Current.Web, "List Settings"); 

    return tps; 
} 

private string _TargetListGUID; 
[Personalizable(PersonalizationScope.Shared)] 
[WebBrowsable(false)] 
[WebDisplayName("Target List GUID")] 
[WebDescription("GUID of the Target List")] 
[SPWebCategoryName("Internal")] 
public string TargetListGUID { 
    get { return _TargetListGUID; } 
    set { _TargetListGUID = value; } 
} 

添加一类是这样的:

public class ListSelectionToolPart : WebPartPages.ToolPart 
{ 
    private SPWeb _web; 
    protected DropDownList ddlLists; 

    public New(SPWeb Web, string ToolTitle) 
    { 
    _web = System.Web; 
    this.Title = ToolTitle; 
    } 

    protected override void CreateChildControls() 
    { 
     Literal litLists = new Literal { Text = "<b>List:</b><br />" }; 
     ddlLists = new DropDownList { 
     AutoPostBack = true, 
     ID = "ddlLists" 
     }; 
     ddlLists.Style.Add("width", "100%"); 
     foreach (SPList list in _web.Lists) 
     { 
     ddlLists.Items.Add(new ListItem(list.Title, list.ID.ToString())); 
     } 
     this.Controls.Add(litLists); 
     this.Controls.Add(ddlLists); 
    } 

    public override void ApplyChanges() 
    { 
    (this.ParentToolPane.SelectedWebPart as MyWebPart).TargetListGUID = ddlLists.SelectedValue; 
    } 

} 

上面的代码假定您的Web部件的名称是MyWebPart,并且有一个TargetListGUID属性。要添加网站选择,您可以在工具部分中执行几乎相同的操作(添加另一个下拉列表)。如果您使用SelectionChanged事件,则可以使用它来填充列表下拉列表。

相关问题