Public Property ViewFields As String
Dim instance As SPQuery Dim value As String value = instance.ViewFields instance.ViewFields = value
public string ViewFields { get; set; }
The ViewFields property allows you to specify which fields to return in a query on a list.
The ViewFields property contains a string that corresponds to the inner XML of the ViewFields element in CAML.
The following code example uses the ViewFields property to specify two fields to return in a query.
This example requires using directives (Imports in Microsoft Visual Basic) for the ( Default Namespace )Microsoft.SharePoint and ( Default Namespace )Microsoft.SharePoint.Utilities namespaces.
Dim webSite As SPWeb = SPContext.Current.Site.AllWebs("Site_Name") Try Dim list As SPList = webSite.Lists("List_Name") Dim query As New SPQuery() query.ViewFields = "<FieldRef Name='Field1'/>" + _ "<FieldRef Name='Field2'/>" Dim items As SPListItemCollection = list.GetItems(query) Dim item As SPListItem For Each item In items Response.Write((SPEncode.HtmlEncode(item.Xml) + "<BR>")) Next item Finally webSite.Dispose() End Try
using (SPWeb oWebsite = SPContext.Current.Site.AllWebs["Site_Name"]) { SPList oList = oWebsite.Lists["List_Name"]; SPQuery oQuery = new SPQuery(); oQuery.ViewFields = "<FieldRef Name='Field1'/>" + "<FieldRef Name='Field2'/>"; SPListItemCollection colListItemsAvailable = oList.GetItems(oQuery); foreach (SPListItem oListItemAvailable in colListItemsAvailable) { Response.Write(SPEncode.HtmlEncode(oListItemAvailable.Xml) + "<BR>"); } }
Certain objects implement the IDisposable interface, and you must avoid retaining these objects in memory after they are no longer needed. For information about good coding practices, see Best Practices: Using Disposable Windows SharePoint Services Objects.
I've created the following piece of code that can aid you when specifying ViewFields:
public static string BuildViewFieldsXml(params string[] fieldNames){ const string TEMPLATE = @"<FieldRef Name='{0:S}'/>"; StringBuilder sb = new StringBuilder(); foreach (string fieldName in fieldNames) { sb.AppendFormat(TEMPLATE, fieldName); } return sb.ToString();}
Use it like this:
SPQuery query = new SPQuery();query.ViewFields = BuildViewFieldsXml("Title", "Created", "SomeCustomField");
<FieldRef Name='Field1' Nullable='TRUE'/>
If you do not add the Nullable attribute, accessing the results of the query like this:
oListItemAvailable["Field1"] will give an Exception.