понедельник, 29 июня 2015 г.

Применение фильтров к полям в представлении с помощью кнопок

Захотел облегчить работу пользователей в SharePoint, и добавить кнопки фильтрации по полю.
Т.к. значений там не много, то я создал кнопки при клике, на которую переходили по адресу http://текущий_адрес.aspx?FilterField1=Vendor&FilterValue1=VMware
В FilterField1 указываем интернал нейм поля, в FilterValue1 значение.
Представлений стало много (активные заявки, выполненные и т.п.) и для каждого представления прописывать руками жестко адрес было лень сделал более универсальный код, который сам берет текущий адрес и работает с ним.
Для красоты добавил Bootstrap.






 код :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<script src="/Style%20Library/Js/jquery-1.11.1.min.js" type="text/javascript"></script>
<script src="/Style%20Library/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="/Style%20Library/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/Style%20Library/Style/NewStyle.css" rel="stylesheet" type="text/css">
<script>
 
 
_spBodyOnLoadFunctionNames.push("activButton");
 
function activButton()
{
 var param = getUrlParameter("FilterValue1")
 if(param)
 {
  jQuery(".btn-primary").attr("class","btn btn-primary btn-lg")
  jQuery("[id='"+ param +"']").attr("class","btn btn-primary btn-lg active")
 }
 else
 {
  jQuery(".btn-primary").attr("class","btn btn-primary btn-lg")
  jQuery("[id='All']").attr("class","btn btn-primary btn-lg active")
 }
}
 
function getUrlParameter(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++)
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam)
        {
   sParameterName[1] = sParameterName[1].replace("%20"," ")
   sParameterName[1] = sParameterName[1].replace("+"," ")
            return sParameterName[1];
        }
    }
}
function setLocation (value)
{
 var queryParameters = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m;
 
 while (m = re.exec(queryString)) {
  queryParameters[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
 }
 if (value == "")
 {
  location.search = "";
 }
 else{
  queryParameters['FilterField1'] = "Vendor" ; //change field Internal name
  queryParameters['FilterValue1'] = value ;
  location.search = $.param(queryParameters);
 }
}
 
function applyFilter(value)
{
 console.log(value)
  
 if(value)
 {
  setLocation(value)
 }
 else
 {
  setLocation("")
 }
}
</script>
 
<div class="lettersfilter">
<button class="btn btn-primary btn-lg" id="All" onclick="applyFilter('')" type="button">Все</button>
<button class="btn btn-primary btn-lg" id="Symantec" onclick="applyFilter('Symantec')" type="button">Symantec</button>
<button class="btn btn-primary btn-lg" id="VMware" onclick="applyFilter('VMware')" type="button">VMware</button>
<button class="btn btn-primary btn-lg" id="CommVault" onclick="applyFilter('CommVault')" type="button">CommVault</button>
<button class="btn btn-primary btn-lg" id="Check Point" onclick="applyFilter('Check Point')" type="button">Check Point</button>
</div>

Комментариев нет:

Отправить комментарий