Cómo usar el control MultipleLookupField de SharePoint: Una guía paso a paso

Al trabajar con SharePoint, es posible que te encuentres con escenarios donde necesitas asociar múltiples elementos de una lista con un elemento en otra lista. Un control útil para lograr esto es el MultipleLookupField. En esta publicación, te guiaremos a través de cómo usar el control MultipleLookupField paso a paso, asegurándonos de que entiendas cómo mostrar y gestionar múltiples valores de búsqueda dentro de tus web parts.

El Problema: Conectar dos listas

El desafío principal es integrar el control MultipleLookupField en una página web que se ejecuta en el contexto de SharePoint. Es posible que desees vincular dos colecciones de campos de SharePoint, como tareas y documentos. Esto requiere una configuración básica, así como entender cómo manipular el control de manera efectiva.

Comenzando con MultipleLookupField

Paso 1: Crea tu entorno de SharePoint

  1. Configura un sitio de equipo: Comienza creando un nuevo sitio de equipo dentro de SharePoint.
  2. Agrega tareas: Ve a la lista de Tareas y crea algunas tareas.
  3. Crea un documento: Sube un documento a la biblioteca de Documentos compartidos.
  4. Crea una columna de búsqueda:
    • En la biblioteca de Documentos compartidos, crea una nueva columna llamada “Relacionados”.
    • Establece esta columna como un campo de Búsqueda que haga referencia al campo “Título” de la lista de Tareas.
    • Asegúrate de permitir múltiples valores para esta columna.

Paso 2: Creando la web part

Para comenzar a utilizar el MultipleLookupField, necesitas crear una web part. Aquí tienes un ejemplo simplificado para guiarte a través de este proceso.

Estructura básica de tu web part

Label l;
MultipleLookupField mlf;

protected override void CreateChildControls()
{
    base.CreateChildControls();
    SPList list = SPContext.Current.Web.Lists["Shared Documents"];
    if (list != null && list.Items.Count > 0)
    {
        LiteralControl lit = new LiteralControl("Asociar tareas a " + list.Items[0].Name);
        this.Controls.Add(lit);

        mlf = new MultipleLookupField();
        mlf.ControlMode = SPControlMode.Edit;
        mlf.FieldName = "Relacionados";
        mlf.ItemId = list.Items[0].ID;
        mlf.ListId = list.ID;
        mlf.ID = "Relacionados";
        this.Controls.Add(mlf);

        Button b = new Button();
        b.Text = "Cambiar";
        b.Click += new EventHandler(bClick);
        this.Controls.Add(b);

        l = new Label();
        this.Controls.Add(l);
    }
}

void bClick(object sender, EventArgs e)
{
    l.Text = "";
    foreach (SPFieldLookupValue val in (SPFieldLookupValueCollection)mlf.Value)
    {
        l.Text += val.LookupValue.ToString() + " ";
    }

    SPListItem listitem = mlf.List.Items[0];
    listitem["Relacionados"] = mlf.Value;
    listitem.Update();
    mlf.Value = listitem["Relacionados"];
}

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    EnsureChildControls();
}

Paso 3: Desplegando tu web part

  1. Compila y despliega: Compila tu código y despliega la web part en tu entorno de SharePoint.
  2. Agrega la web part a tu sitio: Navega a la página de inicio de tu sitio de equipo y agrega una instancia de tu nueva web part.

Entendiendo el controlador de clics

El controlador de eventos de clic bClick es crucial para actualizar la interfaz de usuario.

  • Recuperando valores: Comienza recuperando todos los valores seleccionados del MultipleLookupField y mostrándolos.
  • Actualizando el elemento de la lista: Actualiza el campo “Relacionados” en la lista de documentos con las tareas seleccionadas, asegurando la sincronización entre la interfaz de usuario y el elemento de la lista.

Notas adicionales

  • El ejemplo proporcionado es bastante básico: es importante señalar que carece de un manejo de errores completo y no está destinado para uso en producción. Considera ampliarlo para una mejor usabilidad.
  • Podrías notar que si comentas la línea mlf.Value = listitem["Relacionados"];, la interfaz de usuario puede no sincronizarse correctamente con los datos subyacentes, haciendo que esta línea sea necesaria para el funcionamiento adecuado.

Conclusión

Siguiendo los pasos descritos anteriormente, puedes integrar con éxito el control MultipleLookupField en tu sitio de SharePoint. Esto permite una gestión eficiente de elementos relacionados de diferentes listas, mejorando tu experiencia general en SharePoint. Con un poco de práctica y refinamiento, puedes convertir estos principios básicos en soluciones poderosas adaptadas a tus necesidades específicas.

¡No dudes en ponerte en contacto con cualquier pregunta o comparte tus experiencias usando el control MultipleLookupField en SharePoint!