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

Posted

技术标签:

【中文标题】SharePoint 中 Web 部件的自定义属性编辑器【英文标题】:Custom property editor for Web parts in SharePoint 【发布时间】:2011-06-13 08:38:36 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

所以在您的 Web 部件中执行以下操作:

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 属性。要添加站点选择,您可以在工具部分中执行几乎相同的操作(添加另一个下拉列表)。如果您在其上使用 SelectionChanged 事件,则可以使用它来填充列表下拉列表。

【讨论】:

以上是关于SharePoint 中 Web 部件的自定义属性编辑器的主要内容,如果未能解决你的问题,请参考以下文章

CSS sharepoint 2007内容编辑器Web部件css语法的自定义类

Sharepoint 自定义文本 Web 部件属性

Sharepoint 自定义 Web 部件属性未显示在工具箱中

将自定义 Web 部件部署到 SharePoint 2013

Sharepoint webparts - 在 .designer.cs 文件中作为基本 UserControl 生成的自定义用户控件

如何在 Sharepoint 2010 Web 部件页中正确更新站点图标