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

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

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

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

更改工具部件构造函数以接受SPWeb对象(从Web部件传递SPContext.Current.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 = "List:
" }; 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事件,则可以使用它来填充列表下拉列表。