Sibirman 的首选答案将仅返回视图的原始查询。当用户应用过滤器操作时,用户指定的过滤器实际上会附加到 URL(作为 InplviewHash 字符串的一部分)。
例如#InplviewHashf16272c0-c177-42d7-9638-35fd75c90348=WebPartID%3D%7BF16272C0--C177--42D7--9638--35FD75C90348%7D-FilterField1%3DProjectRef-FilterValue1 %3DProject%25201-FilterField2%3DAddress-FilterValue2%3DPilbara
INPLVIEW.js 和 /_layouts 中的其他 SP JavaScript 文件中有一些函数,其中包括用于对此进行解码和重新初始化视图的函数,但我无法全部解密。
DecodeHashAsQueryString 和 InitGridFromView 是一个很好的起点。
我最终编写了自己的代码来检查哈希字符串,然后删除键/值对。
var uri = window.location.href;
var hashIndex = uri.search("#");
var filter = false;
if (hashIndex == -1) {
// Wasn't found
alert('No filters applied!');
// ...go with default query.
} else {
// # found. Get hashstring
var hashStr = uri.substring(hashIndex);
newStr = DecodeHashAsQueryString(hashStr);
var trStr = newStr.substring(newStr.indexOf("FilterField"));
var retStr = trStr.replace(/%3D|&/g,",").replace(/%2520/g," ");
retStr = retStr.replace(/FilterField[0-9]+,|FilterValue[0-9]+,/g,"")
var filtArray = retStr.split(','); // "MyField1","MyValue1",...
并将它们应用到我自己的不包含限制的查询中,因此所有符合过滤条件的项目都会返回。
如果您想处理文本 opr 选择以外的字段,则需要更进一步并获取字段类型,以便您可以根据需要修改查询的每个字段的值类型。