具有相同字段的多个值的SharePoint筛选列表

时间:2014-07-11 16:59:37

标签: url sharepoint

  

"显示列表中属于该类别的项目   健康或娱乐。"

我有一个示例列表:http://www.example.com/Lists/MyList/AllItems.aspx

如果我要过滤列表项以查找值为" Entertainment"的类别,则URL将如下所示:

http://www.example.com/Lists/MyList/AllItems.aspx?View={ViewId}&FilterField=Categories&FilterValue=Entertainment

假设我想按照类别"娱乐"过滤列表项。或者"健康"。不幸的是,这个URL不起作用,因为我一次只能为同一个字段过滤1个值:

http://www.example.com/Lists/MyList/AllItems.aspx?View={ViewId}&FilterField1=Categories&FilterValue1=Entertainment&FilterField2=Categories&FilterValue2=Health

在SharePoint列表中使用同一字段的多个值(" OR"条件)进行过滤的URL是什么?

4 个答案:

答案 0 :(得分:4)

您需要在查询字符串中使用FilterNameFilterMultiValue的名称/值对来实现OR过滤器。

例如,要过滤SharePoint Team Site中的标准“任务”列表视图以返回“已完成”或“已延期”的所有项目,您的URL将如下所示:

http://www.example.com/Lists/MyList/AllItems.aspx?View={ViewId}&
FilterName=Status&FilterMultiValue=Completed;Deferred

在您的使用案例中,新网址为:

http://www.example.com/Lists/MyList/AllItems.aspx?View={ViewId}&
FilterName=Categories&FilterMultiValue=Entertainment;Health

更新的: 不幸的是,微软并没有很好地记录在SharePoint中工作的查询字符串参数。我甚至不记得我第一次拿起它的地方(有时候你会看到一个原生的网络部分做某事并且自己尝试一下)但是自从SP2007以来我一直在成功使用。这里虽然是2012年的一篇博文,但它解释了同样的事情。提供了更多示例:http://techtrainingnotes.blogspot.com/2012/03/sharepoint-search-filter-or-sort-lists.html

答案 1 :(得分:0)

在Sharepoint 2013(Office 365)中遇到同样的问题。我在List UI中创建了我想要的精确过滤器(多个过滤器,其中一个包含一个字段的AND子句),然后单击"保存此视图"。工作得很好。

答案 2 :(得分:0)

在SharePoint中过滤多值查阅列的解决方案。有关详细说明的链接:Multi value Lookup Columns in SharePoint 代码供参考 - 希望这有助于一些读者。

function multiValueLookup() {
    var items = "";
    var citiesListName = "Cities";
    $("select[title='City possible values'] option").remove();
    $("select[title='State selected values'] option").each(function (i) {
        var clientContext = new SP.ClientContext.get_current();
        var oList = clientContext.get_web().get_lists().getByTitle(citiesListName);
        var camlQuery = new SP.CamlQuery();
        camlQuery.set_viewXml("<View><Query><OrderBy><FieldRef Name='Title' /></OrderBy><Where><Eq><FieldRef Name='State' LookupId='TRUE'/><Value Type='Lookup'>" + $(this).val() + "</Value></Eq></Where></Query></View>");
        var items = oList.getItems(camlQuery);
        clientContext.load(items);
        clientContext.executeQueryAsync(success, failure);
        function success() {
            var pn2 = "";
            var pn1 = "";
            var ListEnumerator = items.getEnumerator();
            while (ListEnumerator.moveNext()) {
                var currentItem = ListEnumerator.get_current();
                if (currentItem.get_item('Title') != null) {
                    var pn1 = currentItem.get_item('Title');
                    if (pn2 != pn1) {
                        items = "<option value='" + currentItem.get_item('ID') + "' title='" + pn1 + "'>" + pn1 + "</option>";
                        $("select[title='City possible values']").append(items);
                        pn2 = pn1;
                    }
                }
            }
        }
        function failure(sender, args) {
            // alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
        }
    });
}

答案 3 :(得分:0)

在SPO上,我尝试使用FilterMultiValue,但它对我不起作用。但是我成功地使用了一个简单的值之间的运算符%3b%23

在此示例URL中,我使用view1(一个已经进行了某些过滤的公共视图),然后在“产品”字段上针对“ value1”和“ value2”过滤该视图URL。

https://company.sharepoint.com/sites/sitename/library/Forms/view1.aspx?FilterFields1=Product&FilterValues1=value1%3b%value2&FilterTypes1=TaxonomyFieldType&viewid=2d0d02c1-4f0c-4eb8-9bea-4d7494bf7014

我的用例:我们有一个产品页面,其中包含指向产品文档的链接。当然,一种产品很容易。但是我需要具有不同产品组合的许多不同链接,并且我不想创建或生成1000个视图。

为了弄清楚,我使用view1的基本URL。然后,我对想要查看的两个值进行了屏幕过滤,这些值附加在URL后面。我使用附加的URL来查看“ OR”运算符是%3b%23 。那时,我使用了包含查看URL所需的所有产品值的电子表格,并将其连接到运算符中,从而创建了完整的URL。然后,我们在Web部件中将这些URL用于产品链接。这是一种黑客手段,但比单个视图或网站页面维护起来更快,更容易。