Kann ich eine Dropdown -Liste mit einer SharePoint -Liste laden, um eine benutzerdefinierte Webpart -Eigenschaft festzulegen?
-
16-10-2019 - |
Frage
Ich habe diesen Beitrag gefunden, der behauptet, Ihnen zu zeigen, wie es geht:
Nachdem ich die Anweisungen und den Code sorgfältig befolgt hatte, konnte ich ihn nicht wie erwartet zum Laufen bringen.
Ich habe eine ähnliche Frage veröffentlicht hier, Aber die Antworten haben mir nur gesagt, wie ich eine Dropdown -Liste mit statischen Werten laden konnte. Ich möchte es aus einer SharePoint -Liste laden.
Lösung
Abe du hast gesagt:
Ich habe die Quelle heruntergeladen, aber sie scheint nur mit der statischen Dropdown -Liste der Elemente zu funktionieren. Ich folgte Ihren Anweisungen, konnte aber nie die Dropdown -Arbeit mit einer internen Liste bekommen. Ist dies möglich, indem Sie den von Ihnen gegebenen Anweisungen befolgen? Wenn ja, wäre es möglich, dass Sie den Arbeitscode dafür veröffentlichen?
In der Quelle müssen Sie eine Überschreibung von hinzufügen 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;
}
Daher verwendet der WebPart die benutzerdefinierten Editor -Teile.
Andere Tipps
Ich habe ein benutzerdefiniertes ToolPart, das aus einer Datenbank liest, aber Sie können sie stattdessen aus einem Splist ändern
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);
}
}