我可以加载带有SharePoint列表的下拉列表以设置自定义Web Part属性吗?
-
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;
}
因此,WebPart将使用自定义编辑器零件。
其他提示
我有一个从数据库中读取的自定义工具部分,但是您可以将其更改为从SPLIST中读取
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);
}
}