Forum Discussion
Marc-Etienne_Tremblay
Feb 23, 2021Brass Contributor
SharePoint 2016 view filter by subsite name
Hi, I have a list webpart who give project info. Title of the project Description of the project. This list is create at the site collection level. When I fill the new project forms on...
- Mar 24, 2021Hi,
After many time of research I have finally resolve my issue with a content editor and a javascript.
I have find information about javascript on this web site.
https://www.linkedin.com/pulse/sharepoint-list-filtering-javascript-maryam-kaveh
I need to adapt the script for my needs here is a copy of my script.
function myFunction() {
// catch the path and delete "/"
var url = location.pathname.split("/").slice(-3);
var titleprojet;
// loop in the values and copie the first one who are the project title.
var i;
for (i = 0; i < url.length; i++) {
if (i == 0) {
titleprojet = url[i];
}
}
//Switch the title in lowerCase
titleprojet = titleprojet.toLowerCase();
// check if the project title is present in all webparts of the page.
// if the project title if found in the webparts table, show the line of row.
//if not hide the line of row.
if (titleprojet) {
$("#WebPartWPQ2").find("tr.ms-itmhover:not(:Contains("+titleprojet+"))").hide();
$("#WebPartWPQ2").find("tr.ms-itmhover:Contains("+titleprojet+")").show();
$("#scriptWPQ6").find("tr.ms-itmhover:not(:Contains("+titleprojet+"))").hide();
$("#scriptWPQ6").find("tr.ms-itmhover:Contains("+titleprojet+")").show();
} else {
$("#WebPartWPQ2").find("tr.ms-itmhover").show();
$("#scriptWPQ6").find("tr.ms-itmhover").show();
}
}
//Wait than all page elements is loaded before execute myFunction.
// That's give the time to the browser to load the information and show the webparts with the good information.
document.addEventListener("DOMContentLoaded", myFunction);
The result is than SharePoint execute the javascript catch the subsite name and use it like filter on each webparts of the page.
Take care, to change the webpart name in this script for ours and take note, the filtering function work on all columns and row.
So if you want only the line where the title is november or include november.
Besure to modify the view to mask columns where we could find november like the creation date columns.
Because, you could have 2 or more results in the table.
Ex: If you have the table below and you want only the record with the november title.
title | description | create date
november | bla bla bla | 2021 november 4
project 2 | bla bla bla | 2021 november 30
the result after the script process will be than the table will include the 2 records.
Because, the november string will be find in the create date too.
Hope this help.
Marc-Etienne_Tremblay
Mar 09, 2021Brass Contributor
Ok I have make somes tests.
I have find the Managed Property SiteTitle.
If I use this property in the request of search result webpart.
and I put SiteTitle:test5.
The result is all page in link with the subsite name test5,
But when I try to use this Managed Property SiteTitle like view filter apply on a list, SharePoint do not return any result.
The list stay empty and the search webpart dont give any error.
I have try "SiteTitle" or [SiteTitle], but SharePoint do not reconize this managed property.
I have find the Managed Property SiteTitle.
If I use this property in the request of search result webpart.
and I put SiteTitle:test5.
The result is all page in link with the subsite name test5,
But when I try to use this Managed Property SiteTitle like view filter apply on a list, SharePoint do not return any result.
The list stay empty and the search webpart dont give any error.
I have try "SiteTitle" or [SiteTitle], but SharePoint do not reconize this managed property.
- Marc-Etienne_TremblayMar 24, 2021Brass ContributorHi,
After many time of research I have finally resolve my issue with a content editor and a javascript.
I have find information about javascript on this web site.
https://www.linkedin.com/pulse/sharepoint-list-filtering-javascript-maryam-kaveh
I need to adapt the script for my needs here is a copy of my script.
function myFunction() {
// catch the path and delete "/"
var url = location.pathname.split("/").slice(-3);
var titleprojet;
// loop in the values and copie the first one who are the project title.
var i;
for (i = 0; i < url.length; i++) {
if (i == 0) {
titleprojet = url[i];
}
}
//Switch the title in lowerCase
titleprojet = titleprojet.toLowerCase();
// check if the project title is present in all webparts of the page.
// if the project title if found in the webparts table, show the line of row.
//if not hide the line of row.
if (titleprojet) {
$("#WebPartWPQ2").find("tr.ms-itmhover:not(:Contains("+titleprojet+"))").hide();
$("#WebPartWPQ2").find("tr.ms-itmhover:Contains("+titleprojet+")").show();
$("#scriptWPQ6").find("tr.ms-itmhover:not(:Contains("+titleprojet+"))").hide();
$("#scriptWPQ6").find("tr.ms-itmhover:Contains("+titleprojet+")").show();
} else {
$("#WebPartWPQ2").find("tr.ms-itmhover").show();
$("#scriptWPQ6").find("tr.ms-itmhover").show();
}
}
//Wait than all page elements is loaded before execute myFunction.
// That's give the time to the browser to load the information and show the webparts with the good information.
document.addEventListener("DOMContentLoaded", myFunction);
The result is than SharePoint execute the javascript catch the subsite name and use it like filter on each webparts of the page.
Take care, to change the webpart name in this script for ours and take note, the filtering function work on all columns and row.
So if you want only the line where the title is november or include november.
Besure to modify the view to mask columns where we could find november like the creation date columns.
Because, you could have 2 or more results in the table.
Ex: If you have the table below and you want only the record with the november title.
title | description | create date
november | bla bla bla | 2021 november 4
project 2 | bla bla bla | 2021 november 30
the result after the script process will be than the table will include the 2 records.
Because, the november string will be find in the create date too.
Hope this help.