Могу ли я загрузить раскрывающий список в список SharePoint, чтобы установить пользовательское свойство веб -части?
-
16-10-2019 - |
Вопрос
Я нашел этот пост, который утверждает, что показывает вам, как это сделать:
Но после тщательного следования инструкциям и загрузки кода я не смог заставить его работать, как и ожидалось.
Я опубликовал аналогичный вопрос здесь, но ответы только сказали мне, как я мог загрузить раскрывающий список со статическими значениями. Я хотел бы загрузить его из списка SharePoint.
Решение
Або, ты сказал:
Я скачал источник, но, похоже, он работает только со статическим раскрывающимся списком элементов. Я следовал вашим инструкциям, но никогда не смог получить раскрытие, работая с внутренним списком. Можно ли это сделать, следуя предоставленным вами инструкциям? Если это так, можно было бы заставить вас опубликовать рабочий код для этого?
В источнике вам нужно добавить переопределение CreateEditorParts
public override EditorPartCollection CreateEditorParts() {
ArrayList editorArray = new ArrayList();
MyEditorPart edPart = new MyEditorPart();
edPart.ID = this.ID + "_editorPart1";
editorArray.Add(edPart);
EditorPartCollection editorParts = new EditorPartCollection(editorArray);
return editorParts;
}
Таким образом, веб -часть будет использовать индивидуальные детали редактора.
Другие советы
У меня есть пользовательская карта инструмента, которая считывается из базы данных, но вы можете изменить ее на чтение от шпилька вместо этого
public class CustomToolPart : ToolPart {
protected override void CreateChildControls() {
ddlCustom = new DropDownList();
ddlCustom.ID = "ddlCustom";
ddlCustom.ToolTip = "Custom";
try {
using (SqlConnection conn = new SqlConnection(this.webPart.ConnectionString)) {
conn.Open();
SqlCommand cmd = new SqlCommand(@"select id,name from [sometableftdb_forums]", conn);
SqlDataAdapter rs = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
rs.Fill(ds, "Data");
ddlCustom.DataSource = ds;
ddlCustom.DataTextField = "name";
ddlCustom.DataValueField = "id";
ddlCustom.DataBind();
ddlCustom.Items.Insert(0, new ListItem("(choose)", "0"));
}
//instead add code here for SPSite/SPWeb/SPList
} catch (SqlException ex) {
ddlCustom.Items.Insert(0, new ListItem("(sql error)", "0"));
}
ListItem item = ddlCustom.Items.FindByValue((webPart != null ? webPart.CustomValueId : 0).ToString());
if (item != null) {
ddlCustom.SelectedIndex = -1;
item.Selected = true;
}
Controls.Add(ddlCustom);
}
}