Link action plugins allow you to create custom events to be executed when a user clicks a field in a report. For example, you may want to display an address in Google Maps when the user clicks it.

A link action plugin implements the ILinkActionPlugin interface and uses the LinkActionPlugin attribute. Your plugin needs references to the HorizonReports.Api and System.ComponentModel.Composition Nuget packages.


Here’s the definition of ILinkActionPlugin:

using HorizonReports.ReportEngine;
using System;
using System.Collections.Generic;
using System.Data;

namespace HorizonReports.Plugins
    /// <summary>
    /// The interface that Link Action plugins must implement.
    /// </summary>
    /// <remarks>
    /// Plugin classes implementing this interface must have an attribute that implements ILinkActionPluginMetaData.
    /// </remarks>
    public interface ILinkActionPlugin : IBasePlugin

        /// <summary>
        /// The descriptive name the end user will see for this link action.
        /// </summary>
        string Caption { get; }

        /// <summary>
        /// This method is called when the corresponding field for this action is clicked.
        /// </summary>
        /// <param name="value">
        /// The value of the clicked field
        /// </param>
        /// <param name="report">
        /// The current report
        /// </param>
        /// <param name="data">
        /// The data table for the current report
        /// </param>
        void PerformLinkAction(object value,
            IReport report, DataTable data);

(As with all plugins that derive from IBasePlugin, it also has an Application member; see the Plugins topic for information about Application.)


The LinkActionPlugin attribute on the plugin class has the usual set of parameters all plugin attributes do; see the Plugins topic for details. Here’s an example:

    Version = "",
    ExecutionPriority = 5)]
public class SampleLinkActionPlugin : ILinkActionPlugin

Table of contents