I have created the following method to fetch list items from a list. The method does return the right items, but no matter what I provide in the viewFields
parameter, it always returns all fields.
public SPListItemCollection GetListItems(SPWeb web, string listTitle, Dictionary<string, string> queryParams, params string[] viewFields)
{
var query = new SPQuery();
//queryString is returning appropriate items
var queryString = this.CreateQueryString(true, queryParams);
query.Query = queryString;
var queryViewFields = string.Empty;
foreach (string viewField in viewFields)
{
var field = web.Fields[viewField];
var queryViewField = string.Format("<FieldRef Name='{0}' />", field.InternalName);
queryViewFields += queryViewField;
}
// To me, this queryViewFields also seems to be fine
query.ViewFields = queryViewFields;
// If no view fields are specified, return all fields
query.ViewFieldsOnly = !string.IsNullOrEmpty(queryViewFields);
var list = web.Lists[listTitle];
var items = list.GetItems(query);
return items;
}
What am I doing wrong? Thanks.
var field = web.Fields[viewField];
that gets the field from the display name parameter, and the next linevar queryViewField = string.Format("<FieldRef Name='{0}' />", field.InternalName);
that explicitly uses internal name.