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("https://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("https://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();
}
}
}