Back to Devexpress

DashboardItemState.MasterFilterValues Property

dashboard-devexpress-dot-dashboardcommon-dot-dashboarditemstate.md

latest13.1 KB
Original Source

DashboardItemState.MasterFilterValues Property

Gets or sets selected master filter values stored in a dashboard state.

Namespace : DevExpress.DashboardCommon

Assembly : DevExpress.Dashboard.v25.2.Core.dll

NuGet Package : DevExpress.Dashboard.Core

Declaration

csharp
public List<object[]> MasterFilterValues { get; set; }
vb
Public Property MasterFilterValues As List(Of Object())

Property Value

TypeDescription
List<Object[]>

A list of object arrays that specify selected master filter values.

|

Remarks

Set Master Filter Values

To set master filter values (for example, a row in a Grid), create an object with an array of elements where each element is a dimension value. A number of values in the array should be the same as a number of dimensions to explicitly identify the master filter value. Values order is based on dimensions order.

View Example: How to specify a default dashboard state in code

The example illustrates how to set the master filter value if a dashboard item contains several dimensions for the ASP.NET Web Forms platform. In this example, the Grid contains two dimension columns: State and Category. To define the Grid item row, add an array with two values, for instance, “Utah” and “Bikes”.

csharp
using DevExpress.DashboardCommon;
using DevExpress.DashboardWeb;
using System;
using System.Collections.Generic;

namespace WebDashboard_ManualDashboardState {
    public partial class Default : System.Web.UI.Page
    {

        DashboardState dashboardState = new DashboardState();
        protected void Page_Load(object sender, EventArgs e) {
            ASPxDashboard1.SetInitialDashboardState += ASPxDashboard1_SetInitialDashboardState;
        }

        protected void ASPxDashboard1_SetInitialDashboardState(object sender, SetInitialDashboardStateEventArgs e) {
            var state = new DashboardState();
            var itemState = new DashboardItemState("gridSalesByState");
            itemState.MasterFilterValues.Add(new object[] { "Utah", "Bikes" });
            state.Items.Add(itemState);
            e.InitialState = state;
        }
    }
}
vb
Imports DevExpress.DashboardCommon
Imports DevExpress.DashboardWeb
Imports System
Imports System.Collections.Generic

Namespace WebDashboard_ManualDashboardState
    Partial Public Class [Default]
        Inherits System.Web.UI.Page

        Private dashboardState As New DashboardState()
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
            AddHandler ASPxDashboard1.SetInitialDashboardState, AddressOf ASPxDashboard1_SetInitialDashboardState
        End Sub

        Protected Sub ASPxDashboard1_SetInitialDashboardState(ByVal sender As Object, ByVal e As SetInitialDashboardStateEventArgs)
            Dim state = New DashboardState()
            Dim itemState = New DashboardItemState("gridSalesByState")
            itemState.MasterFilterValues.Add(New Object() { "Utah", "Bikes" })
            state.Items.Add(itemState)
            e.InitialState = state
        End Sub
    End Class
End Namespace

Implement the IDashboardStateService interface to manage dashboard state for ASP.NET MVC / ASP.NET Core platforms.

The following code snippet illustrates how to specify a dashboard state (such as master filter or parameter values) in code and how to apply this state when loading a dashboard for the first time. In this example, the DashboardState object holds the required dashboard state. The ASPxDashboard.SetInitialDashboardState event is used to apply the specified dashboard state when loading a dashboard.

csharp
using DevExpress.DashboardCommon;
using DevExpress.DashboardWeb;
using System;
using System.Collections.Generic;

namespace WebDashboard_ManualDashboardState
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e) {
        }

        protected void ASPxDashboard1_SetInitialDashboardState(object sender, SetInitialDashboardStateEventArgs e) {
            e.InitialState = InitializeDashboardState();
        }

        public DashboardState InitializeDashboardState() {
            DashboardState dashboardState = new DashboardState();

            DashboardParameterState parameterState = 
                new DashboardParameterState("countryParameter", "USA", typeof(string));

            DashboardItemState gridFilterState = new DashboardItemState("gridDashboardItem1");
            gridFilterState.MasterFilterValues.AddRange(new List<object[]>() {
                new string[1] { "Andrew Fuller" },
                new string[1] { "Laura Callahan" }
            }
            );

            DashboardItemState treemapDrilldownState = new DashboardItemState("treemapDashboardItem1");
            treemapDrilldownState.DrillDownValues.Add("Beverages");

            DashboardItemState rangeFilterState = new DashboardItemState("rangeFilterDashboardItem1");
            rangeFilterState.RangeFilterState.Selection = 
                new RangeFilterSelection(new DateTime(2015, 1, 1), new DateTime(2016, 1, 1));

            dashboardState.Parameters.Add(parameterState);
            dashboardState.Items.AddRange(new List<DashboardItemState>() {
                gridFilterState,
                treemapDrilldownState,
                rangeFilterState }
            );
            return dashboardState;
        }
    }
}
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebDashboard_ManualDashboardState.Default" %>

<%@ Register Assembly="DevExpress.Dashboard.v17.1.Web, Version=17.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" 
    Namespace="DevExpress.DashboardWeb" TagPrefix="dx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="position:absolute; left:0; right:0; top:0; bottom:0;">
        <dx:ASPxDashboard ID="ASPxDashboard1" runat="server" 
            DashboardStorageFolder="~/App_Data/Dashboards"
            WorkingMode="ViewerOnly"
            Height="100%" Width="100%" OnSetInitialDashboardState="ASPxDashboard1_SetInitialDashboardState">
        </dx:ASPxDashboard>
    </div>
    </form>
</body>
</html>
vb
Imports DevExpress.DashboardCommon
Imports DevExpress.DashboardWeb
Imports System
Imports System.Collections.Generic

Namespace WebDashboard_ManualDashboardState
    Partial Public Class [Default]
        Inherits System.Web.UI.Page

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        End Sub

        Protected Sub ASPxDashboard1_SetInitialDashboardState(ByVal sender As Object, ByVal e As SetInitialDashboardStateEventArgs)
            e.InitialState = InitializeDashboardState()
        End Sub

        Public Function InitializeDashboardState() As DashboardState
            Dim dashboardState As New DashboardState()

            Dim parameterState As New DashboardParameterState("countryParameter", "USA", GetType(String))

            Dim gridFilterState As New DashboardItemState("gridDashboardItem1")
            gridFilterState.MasterFilterValues.AddRange(New List(Of Object())() From { _
                New String(0) { "Andrew Fuller" }, _
                New String(0) { "Laura Callahan" } _
            })

            Dim treemapDrilldownState As New DashboardItemState("treemapDashboardItem1")
            treemapDrilldownState.DrillDownValues.Add("Beverages")

            Dim rangeFilterState As New DashboardItemState("rangeFilterDashboardItem1")
            rangeFilterState.RangeFilterState.Selection = New RangeFilterSelection(New Date(2015, 1, 1), New Date(2016, 1, 1))

            dashboardState.Parameters.Add(parameterState)
            dashboardState.Items.AddRange(New List(Of DashboardItemState)() From {gridFilterState, treemapDrilldownState, rangeFilterState})
            Return dashboardState
        End Function
    End Class
End Namespace
aspx
<%@ Page Language="vb" AutoEventWireup="true" CodeBehind="Default.aspx.vb" 
    Inherits="WebDashboard_ManualDashboardState.Default" %>

<%@ Register Assembly="DevExpress.Dashboard.v17.1.Web, Version=17.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" 
    Namespace="DevExpress.DashboardWeb" TagPrefix="dx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="position:absolute; left:0; right:0; top:0; bottom:0;">
        <dx:ASPxDashboard ID="ASPxDashboard1" runat="server" 
            DashboardStorageFolder="~/App_Data/Dashboards"
            WorkingMode="ViewerOnly"
            Height="100%" Width="100%" OnSetInitialDashboardState="ASPxDashboard1_SetInitialDashboardState">
        </dx:ASPxDashboard>
    </div>
    </form>
</body>
</html>

Clear Master Filter Values

To clear filters (unselect all values) of dashboard items, assign an empty array of objects to the MasterFilterValues property:

csharp
protected void ASPxDashboard1_SetInitialDashboardState(object sender, SetInitialDashboardStateEventArgs e) {
    var state = new DashboardState();
    // ...
    var itemState = new DashboardItemState("comboBoxDashboardItem");
    itemState.MasterFilterValues = new List<object[]>() { };
    state.Items.Add(itemState);
    // ...
    e.InitialState = state;
}
vb
Protected Sub ASPxDashboard1_SetInitialDashboardState(ByVal sender As Object, ByVal e As SetInitialDashboardStateEventArgs)
    Dim state As New DashboardState()
    ' ...
    Dim itemState As New DashboardItemState("comboBoxDashboardItem")
    itemState.MasterFilterValues = New List(Of Object()) (New Object()() {})
    state.Items.Add(itemState)
    ' ...
    e.InitialState = state
End Sub

When you try to set a dashboard state in WinForms/WPF and the neutral filter mode is disabled ( UseNeutralFilterMode == false ), for the multiple master filter mode there is a difference between null and empty master filter values:

|

MasterFilterValues values

|

Behavior

| | --- | --- | |

MasterFilterValues = null

|

The control filters data by all values (all values are selected).

| |

MasterFilterValues = []

|

The control excludes all filter (no data is selected).

|

See the following topics for details on how to assign a dashboard state to a Dashboard control:

See Also

DashboardItemState Class

DashboardItemState Members

DevExpress.DashboardCommon Namespace