通过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和其他SP的JavaScript文件功能/ _layouts,但我没能破译这一切。
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 choice以外的字段,您需要更进一步并获取字段类型,以便您可以根据需要修改每个字段的查询的值类型。
实际上,任何方法都可以 - 我提到客户端对象模型,因为我目前正在使用它来获取所选项目。虽然似乎无法看到。 – Chalky