Compartir a través de


Procedimiento para devolver elementos de una lista

Para devolver elementos de una lista, puede crear una instancia de un objeto SPWeb y ver los detalles del modelo de objetos para el objeto SPListItemCollection de la lista. Una vez devuelta la colección de todos los elementos de la lista, puede repetir en toda la colección y usar indizadores para devolver valores de campo específicos.

En el siguiente ejemplo se devuelven todos los elementos de una lista de eventos especificada. Se da por supuesta la existencia de un cuadro de texto que se puede usar para escribir el nombre de la lista de eventos.

Dim mySite As SPWeb = SPContext.Current.Web 
Dim listItems As SPListItemCollection = mySite.Lists(TextBox1.Text).Items 
Dim i As Integer 

For i = 0 To listItems.Count - 1 

   Dim item As SPListItem = listItems(i) 

   Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & " :: " _ 
      & SPEncode.HtmlEncode(item("Location").ToString()) & " :: " _ 
      & SPEncode.HtmlEncode(item("Begin").ToString()) & " :: " _ 
      & SPEncode.HtmlEncode(item("End").ToString()) & "<BR>") 

Next i
SPWeb mySite = SPContext.Current.Web;
SPListItemCollection listItems = mySite.Lists[TextBox1.Text].Items; 

for (int i=0;i<listItems.Count;i++) 
{ 
   SPListItem item = listItems[i]; 

   Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + " : " + 
      SPEncode.HtmlEncode(item["Location"].ToString()) + " : " + 
      SPEncode.HtmlEncode(item["Begin"].ToString()) + " : " + 
      SPEncode.HtmlEncode(item["End"].ToString()) + "<BR>"); 
}

En este ejemplo, se requieren directivas de using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.

Aquí, los indizadores se usan tanto para devolver la lista escrita por el usuario como para devolver elementos específicos de la lista. Para devolver elementos, los indizadores deben especificar el nombre de cada columna cuyo valor se devuelve. En este caso, todos los nombres de campo pertenecen a una lista de eventos comunes.

Además, puede usar uno de los métodos GetItems de la clase SPList para devolver un subconjunto de elementos de una lista. En el siguiente ejemplo, sólo se devuelven los valores de columna de título en que el valor de la columna de almacenamiento sobrepasa 100.

Dim mySite As SPWeb = SPContext.Current.Web
Dim list As SPList = mySite.Lists("Books") 

Dim query As New SPQuery() 
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>" 

Dim myItems As SPListItemCollection = list.GetItems(query) 
Dim item As SPListItem 

For Each item In myItems 
   Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & "<BR>") 
Next item
SPWeb mySite = SPContext.Current.Web;
SPList list = mySite.Lists["Books"]; 

SPQuery query = new SPQuery(); 
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>"; 

SPListItemCollection myItems = list.GetItems(query); 

foreach (SPListItem item in myItems) 
{ 
   Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>"); 
}

En el ejemplo anterior se requieren directivas de using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.

En este ejemplo se da por supuesta la existencia de una lista de libros con una columna de almacenamiento que contiene valores numéricos.

En el ejemplo anterior se usa un constructor para crear una instancia del objeto SPQuery y, a continuación, se asigna a la propiedad Query del objeto de consulta de una cadena de Esquemas Core del Lenguaje de marcado de la aplicación de colaboración (CAML) que especifica el XML interno de la consulta (es decir, el elemento Where). Una vez establecida la propiedad GetItems, el objeto de consulta se pasa mediante el método GetItems para devolver y mostrar los elementos.

Consultas en todas las listas

Puede realizar consultas en todas las listas para consultar de forma más eficaz los datos de varios sitios web. En el siguiente ejemplo, se usa la clase SPSiteDataQuery para definir una consulta y, a continuación, se usa el método GetSiteData para devolver los elementos en que la columna de estado equivale a "Completado".

Dim webSite As SPWeb = SPContext.Current.Web
Dim query As New SPSiteDataQuery()

query.Lists = "<Lists ServerTemplate=""107"" />"
query.Query = "<Where><Eq><FieldRef Name=""Status""/>" + "<Value Type=""Text"">Completed</Value></Eq></Where>"

Dim items As System.Data.DataTable = webSite.GetSiteData(query)
Dim item As System.Data.DataRow

For Each item In items
   Response.Write((SPEncode.HtmlEncode(item("Title").ToString()) + "<BR>"))
Next item
SPWeb webSite = SPContext.Current.Web;
SPSiteDataQuery query = new SPSiteDataQuery();

query.Lists = "<Lists ServerTemplate=\"107\" />";
query.Query =
   "<Where><Eq><FieldRef Name=\"Status\"/>" +
   "<Value Type=\"Text\">Completed</Value></Eq></Where>";

System.Data.DataTable items = webSite.GetSiteData(query);

foreach (System.Data.DataRow item in items)
{
   Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>");
}

En este ejemplo, se requieren directivas de using (Imports en Visual Basic) para los espacios de nombres Microsoft.SharePoint y Microsoft.SharePoint.Utilities.

Vea también

Referencia

Microsoft.SharePoint

Otros recursos

Trabajar con objetos de listas y colecciones
Introducción a la personalización mediante programación de un sitio web de SharePoint en Visual Studio
Validación de seguridad y realización de envíos para actualizar datos
Concesión de privilegio