Search Results for

    Show / Hide Table of Contents

    Working with list views

    Each list has one or more views whereas a view presents the list data in certain manner: which fields are shown in which order, sorting and grouping and more is all defined in a view. A list can have multiple views and using PnP Core SDK you can manage views via the IView interface.

    Getting the views

    To get a view you need to load the Views property of an IList and then enumerate over the returned views to find the one you want to work with.

    // Get Documents list with views via title
    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    // Get Documents list with views via title
    var myList = await context.Web.Lists.GetByServerRelativeUrlAsync($"{context.Uri.PathAndQuery}/Shared Documents", p => p.Views);
    
    // Get Documents list views via id, only load the needed properties
    var myList = await context.Web.Lists.GetByIdAsync(new Guid("d50ec969-cb27-4a49-839f-3c25d1d607d5"), p => p.Views);
    
    // Do something with the views
    foreach(var view in myList.Views.AsRequested())
    {
        // Do something
    }
    

    Adding a view

    To add a view you need to use the AddAsync method on the IViewCollection and specify the ViewOptions for the view to add. Common properties to use when you're adding a view are Title, ViewFields and ViewTypeKind.

    // Get Documents list with views via title
    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    var myView = myList.Views.Add(new ViewOptions()
                                    {
                                        Title = "My custom view",
                                        RowLimit = 10,
                                        Query = "<Where><Eq><FieldRef Name='LinkFilename' /><Value Type='Text'>General</Value></Eq></Where>",
                                        ViewFields = new string[] { "DocIcon", "LinkFilenameNoMenu", "Modified" }
                                    });
    

    Updating a view

    To update a view you set the view properties you need and then call UpdateAsync.

    // Get Documents list with views via title
    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    // Get the view to update
    var viewToUpdate = myList.Views.AsRequested().FirstOrDefault(p => p.Title == "All Documents");
    
    // Update the view
    viewToUpdate.Title = "All";
    await viewToUpdate.UpdateAsync();
    

    Deleting a view

    Deleting a view can be done using the regular Delete methods.

    // Get Documents list with views via title
    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    // Get the view to update
    var viewToDelete = myList.Views.AsRequested().FirstOrDefault(p => p.Title == "View to delete");
    
    await viewToDelete.DeleteAsync();
    

    Adding a field to an existing view

    You can add a new field to an existing view using one of the AddViewField methods and supplying the field using it's internal name.

    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    var myView = myList.Views.Add(new ViewOptions()
                                    {
                                        Title = "My custom view",
                                        RowLimit = 10,
                                        Query = "<Where><Eq><FieldRef Name='LinkFilename' /><Value Type='Text'>General</Value></Eq></Where>",
                                        ViewFields = new string[] { "DocIcon", "LinkFilenameNoMenu" }
                                    });
    // Add the "Modified" field
    await myView.AddViewFieldAsync("Modified");                                
    

    Removing a field from an existing view

    You can remove a field from an existing view using one of the RemoveViewField methods and supplying the field using it's internal name.

    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    var myView = myList.Views.Add(new ViewOptions()
                                    {
                                        Title = "My custom view",
                                        RowLimit = 10,
                                        Query = "<Where><Eq><FieldRef Name='LinkFilename' /><Value Type='Text'>General</Value></Eq></Where>",
                                        ViewFields = new string[] { "DocIcon", "LinkFilenameNoMenu", "Modified" }
                                    });
    // Removes the "Modified" field from the view
    await myView.RemoveViewFieldAsync("Modified");                                
    

    Re-ordering a field in an existing view

    A field in a view can be moved to a new position using one of the MoveViewFieldTo methods.

    var myList = await context.Web.Lists.GetByTitleAsync("Documents", p => p.Views);
    
    var myView = myList.Views.Add(new ViewOptions()
                                    {
                                        Title = "My custom view",
                                        RowLimit = 10,
                                        Query = "<Where><Eq><FieldRef Name='LinkFilename' /><Value Type='Text'>General</Value></Eq></Where>",
                                        ViewFields = new string[] { "DocIcon", "LinkFilenameNoMenu", "Modified" }
                                    });
    
    // Moves the "Modified" field to be the first field in the view
    await myView.MoveViewFieldToAsync("Modified", 0);                               
    
    Back to top PnP Core SDK
    Generated by DocFX with Material UI
    spacer