Пользовательский редактор свойств для веб-частей в SharePoint - PullRequest
2 голосов
/ 21 января 2011

Я создал пользовательскую веб-часть, которая имеет некоторые свойства конфигурации. Значениями этих свойств являются URL-адрес сайта и имя списка. Я хочу показать выпадающий список со всеми именами сайтов и списками для выбранных сайтов. Как я могу показать пользовательский компонент редактора для свойства в SharePoint? Я не хочу получать текстовый редактор по умолчанию.

1 Ответ

2 голосов
/ 21 января 2011

Вы захотите создать пользовательскую панель инструментов.Вот руководство: http://sharepoint -insight.blogspot.com / 2008/10 / sharepoint-creation-web-part-with.html

В основном в вашем коде WebPart вам понадобитсяпереопределить функцию GetToolParts и вернуть ToolPart[]

Измените ваш конструктор инструментальной части так, чтобы он принимал объект SPWeb (передайте ему объект 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 = "<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, вы можете использовать его для заполнения раскрывающегося списка.

...