SharePoint中Web部件的自定义属性编辑器

时间:2011-01-21 19:03:10

标签: c# sharepoint-2007 web-parts

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

1 个答案:

答案 0 :(得分:2)

您需要创建自定义ToolPart。以下是指南:http://sharepoint-insight.blogspot.com/2008/10/sharepoint-creating-web-part-with.html

基本上在您的WebPart代码中,您需要覆盖GetToolParts函数并返回ToolPart[]

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

因此,在您的网络部分执行此操作:

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

}

上面的代码假设您的WebPart的名称是MyWebPart,并且存在TargetListGUID属性。要添加站点选择,您可以在toolpart中执行相同的操作(添加另一个下拉列表)。如果您在其上使用SelectionChanged事件,则可以使用它来填充列表下拉列表。

相关问题