none
Llenar SPList a través de una SPView RRS feed

  • Pregunta

  • Hola

    Tengo un SPView, necesito meter los registros de esa vista en un SPList. Tienen la misma estructura. ¿Es posible esto?

    Hice unas cuantas pruebas, entre ellas la siguiente:SPListItemCollection itemColl;

                    SPListItemCollection itemColl;
                    SPQuery query = new SPQuery(web.Lists["Responsables"].Views["ResponsablesOrdenados"]);
                    itemColl = list.GetItems(query);

                    foreach (SPListItem item in itemColl)
                    {
                        list.Items.Add(item);
                    }

    en este caso intento recorrer los elementos de la vista de responsables ordenados y meterlos en una lista que está declarada mas arriba, pero el .Add aquí no funciona porque no se le puede pasar ese parámetro.

    alguna idea?

    Gracias! Saludos!

    viernes, 10 de febrero de 2012 20:32

Respuestas

  • Hola Marcos,

    Te los esta metiendo en la misma lista porque estas usando la misma lista para el Add().

    Simplemente tienes que instanciar la lista destino y ya esta:

    SPListItemCollection itemColl;               
    SPQuery query = new SPQuery(web.Lists["Responsables"].Views["ResponsablesOrdenados"]);               
    itemColl = list.GetItems(query);
    SPListItem newitem;
    SPList listaDestino=web.Lists["Destino"];              
    foreach (SPListItem item in itemColl)               
    {                   
    newitem = listaDestino.AddItem();
    newitem["Columna1"] = item["Columna1"]
    ...
    newitem["ColumnaN"] = item["ColumnaN"]
    newitem.Update();
    }

    Con eso en principio te debería valer.

    Un saludo


    Sergio Gallego - Analista / Programador de Sharepoint 2010

    martes, 14 de febrero de 2012 12:28

Todas las respuestas

  • Buenas Marcos

    Yo lo haría así:

    SPListItemCollection itemColl;               
    SPQuery query = new SPQuery(web.Lists["Responsables"].Views["ResponsablesOrdenados"]);               
    itemColl = list.GetItems(query);
    SPListItem newitem;
                  
    foreach (SPListItem item in itemColl)               
    {                   
      //list.Items.Add(item);  Supongo que list es la lista que utilizas como origen
    newitem = list.AddItem();
    newitem["Columna1"] = item["Columna1"]
    ...
    newitem["ColumnaN"] = item["ColumnaN"]
    newitem.Update();
    }

    Se puede hacer más elegante el recorrido de columnas, pero la idea sería esta.

    Espero te sea de ayuda. Saludos.

    viernes, 10 de febrero de 2012 23:02
  • Gracias ManuelGB

    Probé esto pero no me funciona.

    Lo que hace esto es copiar los elemento de la lista en la misma lista.

    Tengo una lista de Responsables ( IdResponsable, Nombre, etc), y tengo una vista sobre esa lista que me devuelve los elementos de esa lista pero ordenados por IdResponsable. Lo que necesito es que a los elementos de la vista asi como estan ordenados meterlos en otra lista.

    En el ejemplo tengo una lista origen pero no se como hacer para meter los elementos de la vista en una lista destino.

    El ejemplo lo que hace es agregar a la misma lista que ya tengo los elementos de la vista

    suponiendo que la vista tuviera 5 elementos de la siguiente manera:

    4 ...

    3 ...

    1 ...

    5 ...

    2 ...

    el resultado dedel ejemplo es:

    4 ...

    3 ...

    1 ...

    5 ...

    2 ...

    1 ...

    2 ...

    3 ...

    4 ...

    5 ...

     Como decía anteriormente me agrega los elementos de la vista a la misma lista origen. ¿Habrá alguna forma de meter estos elementos en una nueva lista destino?

    Gracias, Saludos!

    lunes, 13 de febrero de 2012 16:14
  • Hola Marcos,

    Te los esta metiendo en la misma lista porque estas usando la misma lista para el Add().

    Simplemente tienes que instanciar la lista destino y ya esta:

    SPListItemCollection itemColl;               
    SPQuery query = new SPQuery(web.Lists["Responsables"].Views["ResponsablesOrdenados"]);               
    itemColl = list.GetItems(query);
    SPListItem newitem;
    SPList listaDestino=web.Lists["Destino"];              
    foreach (SPListItem item in itemColl)               
    {                   
    newitem = listaDestino.AddItem();
    newitem["Columna1"] = item["Columna1"]
    ...
    newitem["ColumnaN"] = item["ColumnaN"]
    newitem.Update();
    }

    Con eso en principio te debería valer.

    Un saludo


    Sergio Gallego - Analista / Programador de Sharepoint 2010

    martes, 14 de febrero de 2012 12:28