Поле со списком веб-части Sharepoint

У меня есть веб-часть, которая работает вне списка, но то, что я пытаюсь сделать, создает раскрывающийся список, содержащий список списков sharepoint, чтобы, когда пользователь редактирует страницу и выбирает `` изменить общую веб-часть '', они могут выбрать список item, и он будет проанализирован обратно в веб-часть.

Любые примеры или ссылки на примеры приветствуются!

Спасибо

Дэн


person ifunky    schedule 17.05.2010    source источник


Ответы (2)


То, что вы ищете, называется Toolpart. Взгляните на этот пример в качестве учебного пособия. о том, как его создать.

В целом, ваши общие шаги будут следующими:

  1. Создайте свой собственный класс Toolpart, унаследованный от Microsoft.SharePoint.WebPartPages.ToolPart
  2. В настраиваемой Toolpart переопределите CreateChildControls, напишите код для перебора списков в SPWeb и добавьте их в DropDownList.
  3. В своей веб-части переопределите GetToolParts и добавьте свой собственный ToolPart, чтобы он отображался справа.
person Kit Menke    schedule 18.05.2010
comment
Большое спасибо, это путь, по которому я пошел, и статья MSDN меня подтолкнула. - person ifunky; 20.05.2010

Похоже, вы хотите создать собственный редактор. В той части у вас будет одно раскрывающееся меню, которое показывает имена списков (вы, вероятно, хотите отфильтровать скрытые и пустые списки), и, когда элемент выбран из списка, второй раскрывающийся список показывает столбец заголовка элементов из выбранных список.

Вот код (отредактированный здесь, поэтому его нужно очистить), чтобы помочь вам начать работу:

protected Page_Load(...)
{
    if (IsPostBack) return;

    var web = SPContext.Current.Web;
    var query = from list in web.Lists
                where list.Hidden == false && list.ItemCount == 0
                select list;

    DropDownList1.DataSource = query;
    DropDownList1.DataTextField = "Title";
    DropDownList1.DataBind();
}

protected DropDownList1_SelectedIndexChanged(...)
{
    var web = SPContext.Current.Web;
    var listName = DropDownList1.Text;
    var list = web.Lists[listName];
    var table = list.Items.GetDataTable();
    DropDownList2.DataSource = table;
    DropDownList2.DataTextField = "Title";
    DropDownList2.DataValueField = "ID";
    DropDownList2.DataBind();
}
person Rob Windsor    schedule 18.05.2010