Back to Devexpress

ASPxPivotGrid.PopupMenuCreated Event

aspnet-devexpress-dot-web-dot-aspxpivotgrid-dot-aspxpivotgrid-ecf378af.md

latest9.9 KB
Original Source

ASPxPivotGrid.PopupMenuCreated Event

Enables you to create custom menu items.

Namespace : DevExpress.Web.ASPxPivotGrid

Assembly : DevExpress.Web.ASPxPivotGrid.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public event PivotPopupMenuCreatedEventHandler PopupMenuCreated
vb
Public Event PopupMenuCreated As PivotPopupMenuCreatedEventHandler

Event Data

The PopupMenuCreated event's data class is PivotPopupMenuCreatedEventArgs. The following properties provide information specific to this event:

PropertyDescription
MenuGets the context menu.
MenuTypeGets the context menu’s type.

Remarks

Handle the PopupMenuCreated event to create custom menu items. The context menu can be obtained via the PivotPopupMenuCreatedEventArgs.Menu property. Its type is returned by the PivotPopupMenuCreatedEventArgs.MenuType property.

To add a new menu item, use the MenuItemCollection.Add method. To hide default menu items, handle the ASPxPivotGrid.AddPopupMenuItem event.

To define an action for a custom menu item(s), handle the ASPxClientPivotGrid.PopupMenuItemClick event.

Example

This example demonstrates how to add a custom menu item (“Hide this value”) to the field value popup menu and get information on a clicked field.

In this example, the following API is used:

csharp
using DevExpress.Web.ASPxPivotGrid;
using System;
using System.Data;

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

        protected void Page_Load(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath(@"~/App_Data/CustomerReports.xml"));
            ASPxPivotGrid1.DataSource = ds.Tables[0];
            ASPxPivotGrid1.DataBind();
        }
        protected void ASPxPivotGrid1_PopupMenuCreated(object sender, PivotPopupMenuCreatedEventArgs e)
        {
            if (e.MenuType == PivotGridPopupMenuType.FieldValueMenu)
            {
                e.Menu.Items.Add("Hide this value", "hideValue");
            }
        }

        protected void ASPxPivotGrid1_CustomCallback(object sender, PivotGridCustomCallbackEventArgs e)
        {
            ASPxPivotGrid pivot = (ASPxPivotGrid)sender;
            pivot.JSProperties["cpAlertMessage"] = null;
            string[] parameters = e.Parameters.Split(new char[] { '|' });
            if (parameters.Length == 5 && parameters[0] == "MenuItemClick")
            {
                if (parameters[1] == "hideValue")
                {
                    bool isColumn = parameters[4] == "ColumnArea";
                    PivotFieldValueEventArgs fieldValueInfo = pivot.GetFieldValueInfo(isColumn, Convert.ToInt32(parameters[3]));
                    if (isColumn)
                    {
                        pivot.JSProperties["cpAlertMessage"] = string.Format("Cannot hide the {0} column", fieldValueInfo.Value);
                    }
                    else
                    {
                        if (fieldValueInfo.Field != null)
                            fieldValueInfo.Field.FilterValues.Add(fieldValueInfo.Value);
                    }
                }
            }
        }
    }
}
vb
Imports DevExpress.Web.ASPxPivotGrid
Imports System
Imports System.Data

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

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
            Dim ds As New DataSet()
            ds.ReadXml(Server.MapPath("~/App_Data/CustomerReports.xml"))
            ASPxPivotGrid1.DataSource = ds.Tables(0)
            ASPxPivotGrid1.DataBind()
        End Sub
        Protected Sub ASPxPivotGrid1_PopupMenuCreated(ByVal sender As Object, ByVal e As PivotPopupMenuCreatedEventArgs)
            If e.MenuType = PivotGridPopupMenuType.FieldValueMenu Then
                e.Menu.Items.Add("Hide this value", "hideValue")
            End If
        End Sub

        Protected Sub ASPxPivotGrid1_CustomCallback(ByVal sender As Object, ByVal e As PivotGridCustomCallbackEventArgs)
            Dim pivot As ASPxPivotGrid = DirectCast(sender, ASPxPivotGrid)
            pivot.JSProperties("cpAlertMessage") = Nothing
            Dim parameters() As String = e.Parameters.Split(New Char() { "|"c })
            If parameters.Length = 5 AndAlso parameters(0) = "MenuItemClick" Then
                If parameters(1) = "hideValue" Then
                    Dim isColumn As Boolean = parameters(4) = "ColumnArea"
                    Dim fieldValueInfo As PivotFieldValueEventArgs = pivot.GetFieldValueInfo(isColumn, Convert.ToInt32(parameters(3)))
                    If isColumn Then
                        pivot.JSProperties("cpAlertMessage") = String.Format("Cannot hide the {0} column", fieldValueInfo.Value)
                    Else
                        If fieldValueInfo.Field IsNot Nothing Then
                            fieldValueInfo.Field.FilterValues.Add(fieldValueInfo.Value)
                        End If
                    End If
                End If
            End If
        End Sub
    End Class
End Namespace
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ASPxPivotGrid_AddCustomPopupMenuItem.Default" %>

<%@ Register assembly="DevExpress.Web.ASPxPivotGrid.v25.2, Version=25.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxPivotGrid" tagprefix="dx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
        <script type="text/javascript">
        function HideValue(s, e) {
            pivotGrid.PerformCallback('MenuItemClick|' +
                e.MenuItemName + '|' +
                e.FieldID + '|' +
                e.FieldValueIndex + '|' +
                e.Area
            );
        }
        function DisplayAlert(s, e) {
         if (s.cpAlertMessage != null)
          {
               alert(s.cpAlertMessage);
          }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <dx:ASPxPivotGrid ID="ASPxPivotGrid1" runat="server"
                ClientInstanceName="pivotGrid" OnCustomCallback="ASPxPivotGrid1_CustomCallback"
                OnPopupMenuCreated="ASPxPivotGrid1_PopupMenuCreated" 
                ClientIDMode="AutoID">
                <ClientSideEvents PopupMenuItemClick="HideValue" EndCallback="DisplayAlert" />
                <Fields>
                    <dx:PivotGridField ID="fieldProductName" AreaIndex="1"
                        FieldName="ProductName"
                        Area="RowArea">
                    </dx:PivotGridField>
                    <dx:PivotGridField ID="fieldCompanyName" Area="RowArea" AreaIndex="0"
                        FieldName="CompanyName">
                    </dx:PivotGridField>
                    <dx:PivotGridField ID="fieldOrderDate" Area="ColumnArea" AreaIndex="0"
                        FieldName="OrderDate"
                        GroupInterval="DateYear"
                        UnboundFieldName="fieldOrderDate">
                    </dx:PivotGridField>
                    <dx:PivotGridField ID="fieldProductAmount" Area="DataArea" AreaIndex="0"
                        FieldName="ProductAmount">
                    </dx:PivotGridField>
                </Fields>
            </dx:ASPxPivotGrid>
        </div>
    </form>
</body>
</html>

See Also

AddPopupMenuItem

PopupMenuItemClick

ASPxPivotGrid Class

ASPxPivotGrid Members

DevExpress.Web.ASPxPivotGrid Namespace