I have a list named "Discussions List". I want to bring all columns from the list.
I want to know how to do it SharePoint Client Object Model.
// Starting with ClientContext, the constructor requires a URL to the // server running SharePoint. ClientContext context = new ClientContext("https://{site_url}"); Web web = context. Web; context. Load(web); context.
Use the ClientContext class to return context information about such objects as the current web application, site, site collection, or server version. The Document library templates sample app for SharePoint includes an example of how to use this object.
Executes the current set of data retrieval queries and method invocations.
OK. Found the solution. Answer Here using a list I'm getting by title, but will work with any method:
// Get your ClientContext for your site in 'clientContext'
SP.List oList = clientContext.Web.Lists.GetByTitle("List Title Here");
SP.FieldCollection fieldColl = oList.Fields;
clientContext.Load(fieldColl);
clientContext.ExecuteQuery();
foreach (SP.Field fieldTemp in fieldColl)
{
MessageBox.Show(fieldTemp.InternalName.ToString()); //I used MessageBox to show, but you can do whatever you like with it here.
}
Bingo. You're going to love this. Thank goodness for generics and Linq!
// return all rows and (selected) fields of a list--fields are included dynamically
private Dictionary<string,Dictionary<string,object>> getListData( ClientContext ctx )
{
Log.LogMessage( "Fetching {0}{1}", ctx.Url, ListName );
var list = ctx.Web.Lists.GetByTitle( ListName );
// fetch the fields from this list
FieldCollection fields = list.Fields;
ctx.Load( fields );
ctx.ExecuteQuery();
// dynamically build a list of fields to get from this list
var columns = new List<string> { "ID" }; // always include the ID field
foreach( var f in fields )
{
// Log.LogMessage( "\t\t{0}: {1} of type {2}", f.Title, f.InternalName, f.FieldTypeKind );
if( f.InternalName.StartsWith( "_" ) || f.InternalName.StartsWith( "ows" ) ) continue; // skip these
if( f.FieldTypeKind == FieldType.Text ) // get Text fields only... but you can get other types too by uncommenting below
// || f.FieldTypeKind == FieldType.Counter
// || f.FieldTypeKind == FieldType.User
// || f.FieldTypeKind == FieldType.Integer
// || f.FieldTypeKind == FieldType.Number
// || f.FieldTypeKind == FieldType.DateTime
// || f.FieldTypeKind == FieldType.Lookup
// || f.FieldTypeKind == FieldType.Computed
// || f.FieldTypeKind == FieldType.Boolean )
{
columns.Add( f.InternalName );
}
}
// build the include expression of which fields to fetch
List<Expression<Func<ListItemCollection, object>>> allIncludes = new List<Expression<Func<ListItemCollection, object>>>();
foreach( var c in columns )
{
// Log.LogMessage( "Fetching column {0}", c );
allIncludes.Add( items => items.Include( item => item[ c ] ) );
}
// get all the items in the list with the fields
ListItemCollection listItems = list.GetItems( CamlQuery.CreateAllItemsQuery() );
ctx.Load( listItems, allIncludes.ToArray() );
ctx.ExecuteQuery();
var sd = listItems.ToDictionary( k => k["Title"] as string, v => v.FieldValues ); // FieldValues is a Dictionary<string,object>
// show the fields
foreach( var i in sd.Keys )
{
Log.LogMessage( "\tItem: {0}", i );
foreach( var c in columns )
{
Log.LogMessage( "\t\t{0}: {1}", c, sd[ i ][ c ] );
}
}
return sd;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With