¿Puedo cargar una lista desplegable con una lista de SharePoint para establecer una propiedad de pieza web personalizada?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/11289

  •  16-10-2019
  •  | 
  •  

Pregunta

Encontré esta publicación que afirma mostrarle cómo hacerlo:

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

Pero después de seguir cuidadosamente las instrucciones y descargar el código, no he podido hacer que funcione como se esperaba.

Publiqué una pregunta similar aquí, pero las respuestas solo me dijeron cómo podría cargar una lista desplegable con valores estáticos. Me gustaría cargarlo desde una lista de SharePoint.

¿Fue útil?

Solución

Abe dijiste:

Descargué la fuente, pero solo parece funcionar con la lista desplegable estática de elementos. Seguí sus instrucciones, pero nunca pude hacer que el menú desplegable funcionara con una lista interna. ¿Es posible hacer esto siguiendo las instrucciones que ha proporcionado? Si es así, ¿sería posible que publique el código de trabajo para eso?

En la fuente debe agregar una anulación de CreateEditorParts

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

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.createeditorparts.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;
}

Por lo tanto, el WebPart utilizará las piezas de editor personalizadas.

Otros consejos

Tengo una parte de herramienta personalizada que se lee desde una base de datos, pero podría cambiarla para leer desde una espinilla en su lugar

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);
    }
}
Licenciado bajo: CC-BY-SA con atribución
scroll top