FAQ/Questions/reusing-filter-values-for-stored-procedures.md
... ...
@@ -0,0 +1,74 @@
1
+#Reusing filter values for stored procedures
2
+
3
+[[_TOC_]]
4
+
5
+##Question
6
+
7
+How can I use the same value for multiple filters using the same field when using stored procedure parameters?
8
+
9
+##Answer
10
+
11
+Izenda does not natively support the ability to re-use filter values for multiple filters using the same stored procedure parameter. In order to emulate this behavior, custom code will be required in your Global.asax file where your CustomAdHocConfig class exists. Below is a code sample that demonstrates how to implement this behavior at a basic level. The sample may need to be modified for individual use-cases so be sure to test the code before publishing.
12
+
13
+###C♯ example
14
+
15
+```csharp
16
+public override void PreExecuteReportSet(ReportSet reportSet)
17
+{
18
+ // -----
19
+ // Copy filter value form the filled SP parameter to the hidden parameters with the same column name
20
+ // -----
21
+ // Only process SP parameters
22
+ // Collect values from the visible filters
23
+ var filtersToCopy = new Dictionary<string, object>();
24
+ foreach (Filter filter in reportSet.Filters)
25
+ {
26
+ if (filter.Parameter
27
+ && filter.dbColumn != null
28
+ && filter.dbColumn.Table.Type == TableType.StoredProcedure
29
+ && filter.dbColumn.Name.StartsWith("PARAM_")
30
+ && !filtersToCopy.ContainsKey(filter.dbColumn.Name))
31
+ filtersToCopy.Add(filter.dbColumn.Name, filter.Value);
32
+ }
33
+ // Pass values from the visible filters to hidden filters
34
+ foreach (Filter filter in reportSet.Filters)
35
+ {
36
+ if (!filter.Parameter
37
+ && filter.dbColumn != null
38
+ && filter.dbColumn.Table.Type == TableType.StoredProcedure
39
+ && filtersToCopy.ContainsKey(filter.dbColumn.Name))
40
+ filter.Value = filtersToCopy[filter.dbColumn.Name];
41
+ }
42
+}
43
+```
44
+
45
+#VB.NET example
46
+
47
+```visualbasic
48
+Public Overrides Sub PreExecuteReportSet(ByVal reportSet As ReportSet)
49
+ ' -----
50
+ ' Copy filter value form the filled SP parameter to the hidden parameters with the same column name
51
+ ' -----
52
+ ' Only process SP parameters
53
+ ' Collect values from the visible filters
54
+ Dim filtersToCopy As New Dictionary(Of String, Object)()
55
+ For Each filter As Filter In reportSet.Filters
56
+ If filter.Parameter _
57
+ And filter.dbColumn IsNot Nothing _
58
+ And filter.dbColumn.Table.Type = TableType.StoredProcedure _
59
+ And filter.dbColumn.Name.StartsWith("PARAM_") _
60
+ And Not filtersToCopy.ContainsKey(filter.dbColumn.Name) Then
61
+ filtersToCopy.Add(filter.dbColumn.Name, filter.Value)
62
+ End If
63
+ Next
64
+ ' Pass values from the visible filters to hidden filters
65
+ For Each filter As Filter In reportSet.Filters
66
+ If Not filter.Parameter _
67
+ And filter.dbColumn IsNot Nothing _
68
+ And filter.dbColumn.Table.Type = TableType.StoredProcedure _
69
+ And filtersToCopy.ContainsKey(filter.dbColumn.Name) Then
70
+ filter.Value = filtersToCopy(filter.dbColumn.Name)
71
+ End If
72
+ Next
73
+End Sub
74
+```
... ...
\ No newline at end of file