使用validateUpdateListItem方法更新field的值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shrenk/article/details/83068777

如果使用pnpjs更新一个item的某个或者某几个field的值,通常使用update方法,具体使用方式可以参见使用pnp添加或者更新一个field的值这篇博客。这里介绍的是另一种方法“validateUpdateListItem”,使用这个方法可以免去构造一些对象的麻烦,如果更新失败,还会返回具体的错误信息。

基本使用方法:

const list = sp.web.lists.getByTitle("list Title");
list.items.getById(1).validateUpdateListItem({FieldName: "Title", FieldValue: "MyTitle"}).then(r=>{console.log(r);}).catch(e=>{console.log(e);});

参数:{FieldName: string, FieldValue: string}

返回值:{"ErrorMessage": null, "FieldName": "Title",  "FieldValue": "MyTitle",  "HasException": false, "ItemId": 1}

其中参数里的FieldName是指field的InternalName.

如果正确更新field的值,返回值对象中的HasException为false,ErrorMessage为null,如果更新field失败,返回值对象中的HasException为true,ErrorMessage为错误信息。

如果需要一次更新多个field,可以传入数组[{FieldName: "Title", FieldValue: "MyTitle"}, {FieldName: "Number", FieldValue: "123"}]

相应的返回值也是一个数组。

目前这个方法的文档很少,下面总结一些经过验证的,不同field类型需要的参数:

Field TypeAsString 参数 Note
单行文本(single line of text) Text {FieldName:"name", FieldValue "abc"}  
多行文本(multiple line of text) Note {FieldName:"name", FieldValue "abc"}  
选择(Choice) Choice {FieldName:"name", FieldValue "Choice 1"}  
多项选择(Multiple Choice) MultiChoice {FieldName:"name", FieldValue "Choice 1;#Choice2"} ;#连接
数字(Number) Number {FieldName:"name", FieldValue "100"}  
是否(Yes/No) Boolean {FieldName:"name", FieldValue "Yes"} ”Yes“或”No“
超链接(Hyperlink) URL {FieldName:"name", FieldValue "http://bing.com, 必应"} ,分隔url和文本
用户或组 (PeopleGroup) User {FieldName: "name", FieldValue: "[{ ‘Key’: ‘LoginName’ }]")} 或 {FieldName: "name", FieldValue: JSON.stringify([{ Key: LoginName }])} LoginName示例:i:0#.f|membership|[email protected]
用户或组 多值(PeopleGroup) UserMulti {FieldName: "name", FieldValue: JSON.stringify([{ Key: LoginName }, {Key: LoginName}])}  
Taxonomy

TaxonomyFieldType

{FieldName:"name", FieldValue:“TermLabel|TermId”} TermLabel:term的标签,TermId:term的guid,使用'|'分隔
Taxonomy多值

TaxonomyFieldTypeMulti

{FieldName:"name", FieldValue:“TermLabel1|TermId1;TermLabel2|TermId2”} 多个值使用';'分隔
Lookup Lookup {FieldName: "name", FieldValue: "1"}, FieldValue的值是lookup的item的id (需转换为字符串)
Lookup多值 LookupMulti {FieldName: "name", FieldValue: "1;#;#2;#;#3"}, 使用;#;#分隔多值

猜你喜欢

转载自blog.csdn.net/shrenk/article/details/83068777