Views define the columns, ordering, and other details we see when we look at a list. You can have multiple views for a list, including private views - and one default view.
To get a views properties you need to know it's id or title. You can use the standard OData operators as expected to select properties. For a list of the properties, please see this article.
import { sp } from "@pnp/sp";
// know a view's GUID id
sp.web.lists.getByTitle("Documents").getView("2B382C69-DF64-49C4-85F1-70FB9CECACFE").select("Title").get().then(v => {
console.log(v);
});
// get by the display title of the view
sp.web.lists.getByTitle("Documents").views.getByTitle("All Documents").select("Title").get().then(v => {
console.log(v);
});
To add a view you use the add method of the views collection. You must supply a title and can supply other parameters as well.
import { sp, ViewAddResult } from "@pnp/sp";
// create a new view with default fields and properties
sp.web.lists.getByTitle("Documents").views.add("My New View").then(v => {
console.log(v);
});
// create a new view with specific properties
sp.web.lists.getByTitle("Documents").views.add("My New View 2", false, {
RowLimit: 10,
ViewQuery: "<OrderBy><FieldRef Name='Modified' Ascending='False' /></OrderBy>",
}).then((v: ViewAddResult) => {
// manipulate the view's fields
v.view.fields.removeAll().then(_ => {
Promise.all([
v.view.fields.add("Title"),
v.view.fields.add("Modified"),
]).then(_ =>{
console.log("View created");
});
});
});
import { sp, ViewUpdateResult } from "@pnp/sp";
sp.web.lists.getByTitle("Documents").views.getByTitle("My New View").update({
RowLimit: 20,
}).then((v: ViewUpdateResult) => {
console.log(v);
});
Added in 1.2.6
import { sp } from "@pnp/sp";
const viewXml: string = "...";
await sp.web.lists.getByTitle("Documents").views.getByTitle("My New View").setViewXml(viewXml);
import { sp } from "@pnp/sp";
sp.web.lists.getByTitle("Documents").views.getByTitle("My New View").delete().then(_ => {
console.log("View deleted");
});