我发现这篇文章声称向您展示了如何做:

http://blog.concurrency.com/sharepoint/create-a-custom-web-part-part-for-for-sharepoint-2010/comment-page-1/#comment-1851

但是,在仔细按照说明并下载代码之后,我无法按预期工作。

我发布了一个类似的问题 这里, ,但是答案只告诉我如何加载带有静态值的下拉列表。我想从SharePoint列表中加载它。

有帮助吗?

解决方案

安倍您说:

我下载了来源,但它似乎仅适用于静态下拉列表。我遵循您的说明,但从未能够使用内部列表来完成下拉列表。这可以按照您提供的说明来做到这一点?如果是这样,是否有可能为此发布工作代码吗?

在源中,您需要添加 CreateEditorParts

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebedibleditable.createeditorparts.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webparts.webpart.createedieditorparts.aspx

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);
    }
}
许可以下: CC-BY-SA归因
scroll top