SPQuery.ViewFields Property

Gets or sets the view fields that are returned by the query.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online

Syntax

'Declaration
Public Property ViewFields As String
    Get
    Set
'Usage
Dim instance As SPQuery
Dim value As String

value = instance.ViewFields

instance.ViewFields = value
public string ViewFields { get; set; }

Property Value

Type: System.String
A string that contains a fragment in Collaborative Application Markup Language that specifies the view fields.

Remarks

The ViewFields property contains a string that corresponds to the inner XML of the ViewFields element in Collaborative Application Markup Language (CAML).

The Type attribute is particularly useful for Lookup and User fields. Otherwise, without that attribute, the query may not return the expected results. In some cases, the query may fail completely.

Note

For information about how to use Language-Integrated Query (LINQ) queries to retrieve list items in SharePoint Foundation, see Managing Data with LINQ to SharePoint.

Examples

The following example is a console application that uses a query to get a collection of items from the Tasks list and specifies the field values to return with each item. After fetching the data, the application prints a report to the console.

Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using site As SPSite = New SPSite("http://localhost")
         Using web As SPWeb = site.OpenWeb()

            ' Build a query.
            Dim query As SPQuery = New SPQuery()
            query.Query = String.Concat( _
                              "<Where><Eq>", _
                                 "<FieldRef Name='Status'/>", _
                                 "<Value Type='CHOICE'>Not Started</Value>", _
                              "</Eq></Where>", _
                              "<OrderBy>", _
                                 "<FieldRef Name='DueDate' Ascending='TRUE' />", _
                                 "<FieldRef Name='Priority' Ascending='TRUE' />", _
                              "</OrderBy>")

            query.ViewFields = String.Concat( _
                                   "<FieldRef Name='AssignedTo' />", _
                                   "<FieldRef Name='LinkTitle' />", _
                                   "<FieldRef Name='DueDate' />", _
                                   "<FieldRef Name='Priority' />")

            query.ViewFieldsOnly = True ' Fetch only the data that we need.

            ' Get data from a list.
            Dim listUrl As String = web.ServerRelativeUrl + "/lists/tasks"
            Dim list As SPList = web.GetList(listUrl)
            Dim items As SPListItemCollection = list.GetItems(query)

            ' Print a report header.
            Console.WriteLine("{0,-25}  {1,-20}  {2,-25}  {3}", _
                  "Assigned To", "Task", "Due Date", "Priority")

            ' Print the details.
            Dim item As SPListItem
            For Each item In items
               Console.WriteLine("{0,-25}  {1,-20}  {2,-25}  {3}", _
                     item("AssignedTo"), item("LinkTitle"), item("DueDate"), item("Priority"))
            Next

         End Using
      End Using
      Console.ReadLine()
   End Sub
End Module
using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite site = new SPSite("http://localhost"))
         {
            using (SPWeb web = site.OpenWeb())
            {
               // Build a query.
               SPQuery query = new SPQuery();
               query.Query = string.Concat(
                              "<Where><Eq>",
                                 "<FieldRef Name='Status'/>",
                                 "<Value Type='CHOICE'>Not Started</Value>",
                              "</Eq></Where>",
                              "<OrderBy>",
                                 "<FieldRef Name='DueDate' Ascending='TRUE' />",
                                 "<FieldRef Name=’Priority’ Ascending='TRUE' />", 
                              "</OrderBy>");                    

               query.ViewFields = string.Concat(
                                   "<FieldRef Name='AssignedTo' />",
                                   "<FieldRef Name='LinkTitle' />",
                                   "<FieldRef Name='DueDate' />",
                                   "<FieldRef Name='Priority' />");

               query.ViewFieldsOnly = true; // Fetch only the data that we need.

               // Get data from a list.
               string listUrl = web.ServerRelativeUrl + "/lists/tasks";
               SPList list = web.GetList(listUrl);
               SPListItemCollection items = list.GetItems(query);

               // Print a report header.
               Console.WriteLine("{0,-25}  {1,-20}  {2,-25}  {3}",
                  "Assigned To", "Task", "Due Date", "Priority");

               // Print the details.
               foreach (SPListItem item in items)
               {
                  Console.WriteLine("{0,-25}  {1,-20}  {2,-25}  {3}",
                     item["AssignedTo"], item["LinkTitle"], item["DueDate"], item["Priority"]);
               }
            }
         }
         Console.ReadLine();
      }
   }
}

See Also

Reference

SPQuery Class

SPQuery Members

Microsoft.SharePoint Namespace

ViewFieldsOnly