﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://community.devexpress.com/feed-stylesheets/rss.xsl" media="screen"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dx="https://www.devexpress.com/" xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Dashboard &amp; Data Visualization Blog</title>
    <link>https://community.devexpress.com/Blogs/analytics/default.aspx</link>
    <description />
    <language>en-US</language>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388231</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2025/06/09/devexpress-javascript-chat-meets-devexpress-bi-dashboard-ai-powered-data-analysis.aspx</link>
      <category domain="https://community.devexpress.com/Tags/AI">AI</category>
      <category domain="https://community.devexpress.com/Tags/ASP.NET+Core">ASP.NET Core</category>
      <category domain="https://community.devexpress.com/Tags/BI+Dashboard">BI Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/DevExtreme">DevExtreme</category>
      <category domain="https://community.devexpress.com/Tags/JavaScript">JavaScript</category>
      <title>DevExtreme JavaScript Chat Meets DevExpress BI Dashboard — AI-powered Data Analysis</title>
      <description>&lt;p&gt;In this post, I&amp;#39;ll describe how you can leverage the capabilities of the&amp;nbsp;&lt;a href="https://js.devexpress.com/jQuery/Demos/WidgetsGallery/Demo/Chat/Overview/MaterialBlueLight/" target="_blank" title="JavaScript/jQuery Chat - Overview"&gt;DevExpress JavaScript Chat (dxChat)&lt;/a&gt;&amp;nbsp;&lt;strong&gt;&lt;a href="https://js.devexpress.com/jQuery/Demos/WidgetsGallery/Demo/Chat/Overview/MaterialBlueLight/" target="_blank" title="JavaScript/jQuery Chat - Overview"&gt;&lt;/a&gt;&lt;/strong&gt;component and incorporate an AI Assistant within the&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/dashboard/" target="_blank" title="DevExpress BI Dashboard"&gt;DevExpress BI Dashboard&lt;/a&gt;. As you&amp;#39;ll see below, the&lt;code&gt;dxChat&lt;/code&gt; component is connected to &lt;strong&gt;Open&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;AI &lt;/strong&gt;hosted in Microsoft Azure and uses the &lt;a href="https://platform.openai.com/docs/assistants/overview" target="_blank" title="Assistants API"&gt;Assistants API&lt;/a&gt; for data analysis purposes&amp;nbsp;(users can analyze&amp;nbsp;dashboard data conversationally).&lt;/p&gt;
&lt;h2&gt;How It Works&lt;/h2&gt;
&lt;p&gt;When the DevExpress BI Dashboard loads (or whenever data changes), it automatically exports aggregated data to a temporary data snapshot. Behind the scenes, the AI Assistant processes Dashboard exports (triggered by each data update), sends updated files to the OpenAI Assistant, and generates real-time responses to user queries based on Dashboard data. The implementation follows the &lt;strong&gt;&amp;quot;bring your own key&amp;quot; principle&lt;/strong&gt;, requiring an active &lt;strong&gt;OpenAI&lt;/strong&gt; or &lt;strong&gt;Azure OpenAI subscription&lt;/strong&gt; to access the AI service.&lt;/p&gt;

&lt;strong&gt;Implementation Details:&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Custom Dashboard Item&lt;/strong&gt;: The AI assistant is implemented as a &lt;a target="_blank" href="https://docs.devexpress.com/Dashboard/117546/web-dashboard/advanced-customization/create-a-custom-item" title="Create a Custom Item for the Web Dashboard"&gt;custom web Dashboard item&lt;/a&gt; using the &lt;code&gt;dxChat&lt;/code&gt; widget. You can add it from the toolbox, like any other Dashboard item.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Context-Aware Responses&lt;/strong&gt;: The AI Assistant reviews/analyzes displayed data. Changes to Dashboard parameters, filters, or data sources automatically refresh the Assistant context.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Dynamic Data Interaction&lt;/strong&gt;: Click “Select Widget” in the chat header to narrow the Assistant’s focus to a single Dashboard element.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://community.devexpress.com/blogs/analytics/25.1/AI/bi-dashboard-ai-assistant.png" alt="AI Assistant in DevExpress Web Dashboard" style="width:3032px;height:1568px;"&gt;

&lt;h2&gt;Review our GitHub Example&lt;/h2&gt;
&lt;p&gt;To review our implementation and try it at your own pace, visit our GitHub repository, where you’ll find:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Source code and setup instructions&lt;/li&gt;
    &lt;li&gt;Custom Dashboard item implementation &lt;/li&gt;
    &lt;li&gt;Azure OpenAI integration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-integrate-ai-assistant" target="_blank" title="🔗 Explore the GitHub Repository — Dashboard for ASP.NET Core — Integrate AI Assistant based on Azure OpenAI"&gt;GitHub Repository — DevExpress BI Dashboard for ASP.NET Core — Azure OpenAI-based AI Assistant  &lt;/a&gt;&lt;/p&gt;

&lt;div class="Note"&gt;&lt;strong&gt;Note&lt;/strong&gt;: To see more examples of AI Assistant integration, refer to the following resources:
    &lt;ul&gt;
        &lt;li&gt;&lt;a target="_blank" href="https://github.com/DevExpress-Examples/web-reporting-integrate-ai-assistant"&gt;Reporting for ASP.NET Core and DevExtreme JavaScript Chat — Integrate AI Assistant&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a target="_blank" href="https://community.devexpress.com/Blogs/aspnet/archive/2025/03/24/devexpress-blazor-ai-chat-ai-assistants-for-report-viewer-and-grid.aspx"&gt;DevExpress Blazor AI Chat — AI Assistants for Report Viewer and Grid&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;

&lt;h2&gt;Share Your Feedback&lt;/h2&gt;
&lt;p&gt;We appreciate your continued support and enthusiasm for DevExpress tools. If you have any questions or would like to discuss AI-related integration needs, please submit a support ticket via the &lt;a target="_blank" href="https://devexpress.com/ask"&gt;DevExpress Support Center&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Jun 2025 02:25:00 Z</pubDate>
      <dc:creator>Dmitry Tokmachev (DevExpress)</dc:creator>
      <dx:excerpt>This post describes how you can use the DevExpress JavaScript Chat (dxChat) component and incorporate an AI Assistant within the DevExpress BI Dashboard. </dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387851</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2023/08/16/devexpress-bi-dashboard-new-export-capabilities-v23-1.aspx</link>
      <category domain="https://community.devexpress.com/Tags/BI+Dashboard">BI Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Excel+Export">Excel Export</category>
      <category domain="https://community.devexpress.com/Tags/Export">Export</category>
      <title>DevExpress BI Dashboard — New Export Capabilities (v23.1)</title>
      <description>&lt;p&gt;In our v23.1 release cycle, we extended export capabilities for &lt;a href="https://www.devexpress.com/products/net/dashboard/" target="_blank"&gt;BI Dashboard&lt;/a&gt; items. These enhancements are available for WinForms, WPF and Web platforms and include the following options:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Export Custom Dashboard items to Excel and customize the exported document itself&lt;/li&gt;
    &lt;li&gt;Customize Pivot Grid Dashboard items during export&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Custom Item Export to Excel&lt;/h2&gt;
&lt;p&gt;v23.1 allows you to export Custom Dashboard items using all supported export formats for built-in Dashboard items. This includes:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;PDF&lt;/li&gt;
    &lt;li&gt;Image&lt;/li&gt;
    &lt;li&gt;Excel (XLS, XLSX)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An &lt;b&gt;Export to Excel&lt;/b&gt; option has been added to the &lt;b&gt;Export To&lt;/b&gt; drop-down (located within a Custom Dashboard item’s caption).&lt;/p&gt;

&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/new-export-capabilities/bi-dashboard-export-capabilities-0.png" class="small" style="width:544px;height:395px;" alt=""&gt;

&lt;p&gt;For Web platforms, you can display the &lt;b&gt;Export To&lt;/b&gt; option for an individual Custom Dashboard item within your BI Dashboard by overriding the &lt;i&gt;allowExportSingleItem&lt;/i&gt; method in the item’s configuration file:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;class FunnelChartItemViewer extends Dashboard.CustomItemViewer {
   //...
    allowExportSingleItem() {
        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The Dashboard control exports custom item data in tabular format. Each column corresponds to a data item.&lt;/p&gt;

&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/new-export-capabilities/bi-dashboard-export-capabilities-1.png" class="small" style="width:642px;height:385px;" alt=""&gt;

&lt;h2&gt;Customize Exported Documents&lt;/h2&gt;
&lt;p&gt;You can now customize generated documents (for custom dashboard items) when handling the control’s &lt;code&gt;CustomizeExportDocument&lt;/code&gt; event. To help you obtain custom item data and modify the layout of the generated document, we added the following methods in event arguments:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.CustomizeExportDocumentEventArgs.GetItemData(System.String)" target="_blank"&gt;e.GetItemData (WinForms)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardWeb.CustomizeExportDocumentWebEventArgs.GetItemData(System.String)" target="_blank"&gt;e.GetItemData (Web)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardWeb.CustomizeExportDocumentWebEventArgs.GetDashboardItem(System.String)" target="_blank"&gt;e.GetDashboardItem (Web)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, you can generate an XLSX document using the &lt;a href="https://docs.devexpress.com/OfficeFileAPI/14912/spreadsheet-document-api" target="_blank"&gt;Spreadsheet Document API&lt;/a&gt; (included in our &lt;a href="https://docs.devexpress.com/OfficeFileAPI/14911/office-file-api" target="_blank"&gt;Office File API&lt;/a&gt; suite) to customize headers:&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/new-export-capabilities/bi-dashboard-export-capabilities-2.png" alt="" class="small" style="width:341px;height:367px;"&gt;
&lt;p&gt;Refer to the following help topics for more information in this regard:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/404340/winforms-dashboard/winforms-designer/ui-elements-and-customization/create-a-custom-item/custom-item-export" target="_blank"&gt;Custom Item Export in WinForms Dashboards&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/404365/web-dashboard/advanced-customization/create-a-custom-item/custom-item-export" target="_blank"&gt;Custom Item Export in Web Dashboards&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Pivot Grid Item - Custom Export&lt;/h2&gt;
&lt;p&gt;Our BI Dashboard control raises the &lt;code&gt;CustomExport&lt;/code&gt; event before saving the exported document to PDF and image formats. Use this event to obtain the printable &lt;a href="https://docs.devexpress.com/XtraReports/DevExpress.XtraReports.UI.XRPivotGrid" target="_blank"&gt;XRPivotGrid&lt;/a&gt; control for &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.PivotDashboardItem" target="_blank"&gt;PivotDashboardItem&lt;/a&gt; and customize the Pivot Grid item in the exported document.&lt;/p&gt;

&lt;p&gt;The example below illustrates the use of different events and customization settings for the &lt;code&gt;XRPivotGrid&lt;/code&gt; control (to customize Pivot Grid item elements).&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/winforms-dashboard-pivot-custom-export/tree/2023.1"&gt;Dashboard for WinForms - How to Customize the Pivot Grid Item on Export&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Specifically, the GitHub example listed above addresses the following:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Removes specified columns and rows.&lt;/li&gt;
    &lt;li&gt;Renames columns.&lt;/li&gt;
    &lt;li&gt;Removes rows by value.&lt;/li&gt;
    &lt;li&gt;Resizes columns and rows.&lt;/li&gt;
    &lt;li&gt;Changes row appearance.&lt;/li&gt;
    &lt;li&gt;Customizes grand totals.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The strategy outlined in this example is applicable to all &lt;code&gt;CustomExport&lt;/code&gt; events as well.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;ASPxDashboard.CustomExport&lt;/li&gt;
    &lt;li&gt;DashboardExporter.CustomExport&lt;/li&gt;
    &lt;li&gt;DashboardConfigurator.CustomExport&lt;/li&gt;
&lt;li&gt;DashboardDesigner.CustomExport&lt;/li&gt;
    &lt;li&gt;DashboardViewer.CustomExport&lt;/li&gt;
    &lt;li&gt;DashboardControl.CustomExport&lt;/li&gt;
    &lt;li&gt;IDashboardControl.CustomExport&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What’s New in v23.1&lt;/h2&gt;
&lt;p&gt;Refer to the following web page to learn more about our most recent BI Dashboard release (and rate the release by voting in our online poll): &lt;a href="https://www.devexpress.com/subscriptions/new-2023-1.xml#dashboard" target="_blank"&gt;Business Intelligence Dashboard v23.1.&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 16 Aug 2023 23:30:00 Z</pubDate>
      <dc:creator>Polina Fedorova (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387840</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2023/08/02/reporting-amp-bi-dashboard-data-sources-ef-dependency-injection-sqldatasource-service-queries.aspx</link>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/EF">EF</category>
      <category domain="https://community.devexpress.com/Tags/Reporting">Reporting</category>
      <category domain="https://community.devexpress.com/Tags/SqlDataSource">SqlDataSource</category>
      <category domain="https://community.devexpress.com/Tags/v23.1">v23.1</category>
      <title>Reporting &amp; BI Dashboard Data Sources — EF Dependency Injection, SqlDataSource Service Queries (v23.1)</title>
      <description>&lt;p&gt;
    In this post, I’ll summarize a set of enhancements introduced in v23.1 for SQL and Entity Framework data sources used in our Reporting and BI Dashboard products.
&lt;/p&gt;
&lt;h2&gt;
    Resolve Entity Framework Core Context from the ASP.NET Core Dependency Injection Container
&lt;/h2&gt;
&lt;p&gt;
    An ASP.NET Core application using Entity Framework supplies data to a report/dashboard as a &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/system.data.entity.dbcontext"&gt;DbContext&lt;/a&gt; object.
&lt;/p&gt;
&lt;p&gt;
This object works in the scope of an HTTP request whose lifetime differs from those of a report/dashboard. A report is created in the HTTP request context and starts a background thread to obtain data and create a document. Because a report needs data after the initial HTTP request is completed and a dashboard uses cashed data source in a control, the default DbContext instance created by Entity Framework (in the scope of the HTTP request) cannot be used.
&lt;/p&gt;
&lt;p&gt;
    We now offer developers a way to resolve the appropriate Entity Framework Core context from the ASP.NET Core dependency injection container for dashboards/reports bound to an Entity Framework data source.
&lt;/p&gt;
&lt;p&gt;
    The following new API is used to create a custom service that returns a context object from the dependency injection container:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
        &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.Data.Entity.IEFContextProvider"&gt;IEFContextProvider&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.DataAccess.Web.IEFContextProviderFactory"&gt;IEFContextProviderFactory&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
   The following code snippet implements a custom service that allows you to obtain the appropriate EF Core Context:
&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;
using DevExpress.Data.Entity;
using DevExpress.DataAccess.Web;
using System;
using Microsoft.Extensions.DependencyInjection;
namespace WebEFCoreApp.Services {
    public class CustomEFContextProviderFactory : IEFContextProviderFactory {
        private readonly IServiceProvider serviceProvider;
        public CustomEFContextProviderFactory(IServiceProvider serviceProvider) {
            this.serviceProvider = serviceProvider;
        }
        public IEFContextProvider Create() {
            return new CustomEFContextProvider(serviceProvider.CreateScope());
        }
    }
    public class CustomEFContextProvider : IEFContextProvider, IDisposable {
        private readonly IServiceScope scope;
        public CustomEFContextProvider(IServiceScope scope) {
            this.scope = scope;
        }

        public object GetContext(string connectionName, Type contextType) {
            // Returns the context for the specified `EFDataSource.ConnectionName`. 
            if (connectionName == &amp;quot;efCoreConnection&amp;quot;)
                return scope.ServiceProvider.GetRequiredService(contextType);
            return null;
        }
        public void Dispose() {
            scope.Dispose();
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
    Register the context and the factory implementation in the dependency injection container:
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
namespace DXWebApplication1 {
    public class Startup {
        public Startup(IConfiguration configuration, IWebHostEnvironment hostingEnvironment) {
            Configuration = configuration;
        }
        public void ConfigureServices(IServiceCollection services) {
            // ...
            services.ConfigureReportingServices(configurator =&amp;gt; {
                configurator.ConfigureWebDocumentViewer(viewerConfigurator =&amp;gt; {
                    // ...
                    viewerConfigurator.RegisterEFContextProviderFactory();
                });
                configurator.UseAsyncEngine();
            });
            services.AddDbContext(options =&amp;gt; options.UseSqlite(&amp;quot;Data Source=file:Data/nwind.db&amp;quot;), ServiceLifetime.Transient);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Review the following examples to learn more about our implementation: 
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-ef-context"&gt;BI Dashboard for ASP.NET Core - Resolve Entity Framework Core Context from the DI Container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-reporting-ef-context"&gt;Reporting for ASP.NET Core - Resolve the Entity Framework Core Context from the DI Container&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    Configure SqlDataSource Service Queries
&lt;/h2&gt;

&lt;h3&gt;
    Intercept SQL Operations and Commands
&lt;/h3&gt;

&lt;p&gt;
    v23.1 ships with new &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.DataAccess.Sql.IDBCommandInterceptor"&gt;IDBCommandInterceptor&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.DataAccess.Sql.IDBConnectionInterceptor"&gt;IDBConnectionInterceptor&lt;/a&gt; interfaces.
&lt;/p&gt;
&lt;p&gt;
    These interfaces allow you to intercept, modify, and/or suppress SQL operations and commands while establishing a connection to a database. The list includes low-level database operations such as executing a command or setting a key-value pair in a session context. Once the connection is open, you can store values in the session context and execute a desired request.
&lt;/p&gt;
&lt;p&gt;
    The following examples address specific usage scenarios:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-row-level-security"&gt;BI Dashboard for ASP NET.Core - Row-Level Security&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-reporting-row-level-security"&gt;Reporting for ASP NET.Core - Row-Level Security&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/winforms-reporting-interceptors"&gt;Reporting for WinForms - Override the Default Isolation Level&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
   Set Isolation Levels 
&lt;/h3&gt;
&lt;p&gt;
   We also added &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.DataAccess.Sql.ConnectionOptions.IsolationLevel"&gt;ConnectionOptions.IsolationLevel&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.DataAccess.Sql.SqlQuery.IsolationLevel"&gt;SqlQuery.IsolationLevel&lt;/a&gt; properties to help specify the isolation level used to isolate one transaction from another.  
&lt;/p&gt;
&lt;p&gt;
    You can set IsolationLevel to one of the following values:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;None&lt;/li&gt;
    &lt;li&gt;ReadUncommitted&lt;/li&gt;
    &lt;li&gt;ReadCommitted&lt;/li&gt;
    &lt;li&gt;RepeatableRead&lt;/li&gt;
    &lt;li&gt;Serializable&lt;/li&gt;
    &lt;li&gt;Snapshot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    Each time a query is executed, a corresponding transaction type will be opened (except for the None). Once the request is executed, the transaction is immediately closed.
&lt;/p&gt;
&lt;p&gt;
    The benefits of this strategy are as follows: 
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Set Isolation Level in the UI via the property grid dialog. You do not need to create a stored procedure to set the transaction level or write any code.&lt;br&gt;
    &lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/ef-di/2023-07-06_17-00-22.png" alt="SQL Data Source Isolation Level" class="small"&gt;
    &lt;/li&gt;
    &lt;li&gt;Execute queries without SQL database locking. This can significantly reduce query times.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    What’s New in v23.1
&lt;/h2&gt;
&lt;p&gt;
    Refer to the following web page to learn more about our most recent release (and rate the release by voting in our online poll): &lt;a href="https://www.devexpress.com/subscriptions/new-2023-1.xml"&gt;Our Newest Features (v23.1)&lt;/a&gt;.
&lt;/p&gt;</description>
      <pubDate>Wed, 02 Aug 2023 23:15:00 Z</pubDate>
      <dc:creator>Boris Zaitsev (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387848</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2023/07/16/devexpress-bi-dashboard-trend-indicators-v23-1.aspx</link>
      <category domain="https://community.devexpress.com/Tags/Charts">Charts</category>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Indicators">Indicators</category>
      <category domain="https://community.devexpress.com/Tags/Trendlines">Trendlines</category>
      <category domain="https://community.devexpress.com/Tags/v23.1">v23.1</category>
      <title>DevExpress BI Dashboard — Trend Indicators (v23.1)</title>
      <description>&lt;p&gt;As you may already know, DevExpress BI Dashboard v23.1 supports use of &lt;a href="https://docs.devexpress.com/Dashboard/404416/web-dashboard/create-dashboards-on-the-web/dashboard-item-settings/chart/trend-indicators?p=netframework" target="_blank"&gt;Trend Indicators&lt;/a&gt; within Dashboard Chart items.  &lt;/p&gt;
&lt;p&gt;Trend indicators help communicate data trends over time – allowing users to uncover patterns and analyze complex datasets more effectively. &lt;/p&gt;
&lt;p&gt;Our BI Dashboard supports the following trend indicators (across all supported platforms):&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Trend line&lt;/strong&gt; (&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartTrendLine" target="_blank"&gt;ChartTrendLine&lt;/a&gt;): displays the general direction of associated points (often used to identify existing data trends and forecast future trends).&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Regression line&lt;/strong&gt; (&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartRegressionLine" target="_blank"&gt;ChartRegressionLine&lt;/a&gt;): visualizes data using a mathematical formula that minimizes the distance between the line itself and associated data points (often used to model the relationship between two variables and can be used to make predictions about one variable based on the value of the other variable).&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Custom Indicator&lt;/strong&gt; (&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartCustomIndicator" target="_blank"&gt;ChartCustomIndicator&lt;/a&gt;): allows you to add your own indicator type to visualize sales trends and render financial patterns.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can create, edit, and delete these indicators both via the Dashboard&amp;#39;s UI and in code.&lt;/p&gt;

&lt;h2&gt;End-User Experience&lt;/h2&gt;
&lt;p&gt;End-users can manage a trend indicator collections via the Dashboard&amp;#39;s UI. &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;p&gt;In the Web Dashboard designer, click &lt;strong&gt;Trend Indicators&lt;/strong&gt; in the &lt;strong&gt;Options&lt;/strong&gt; dialog to open the &lt;b&gt;Trend Indicators&lt;/b&gt; editor.&lt;/p&gt;
        &lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/trend-indicators/trend-indicators-eux-web.png" alt="" class="small" style="width:715px;height:570px;"&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;p&gt;In the WinForms Dashboard designer, click the &lt;strong&gt;Trend Indicators&lt;/strong&gt; button in the Ribbon&amp;#39;s &lt;strong&gt;Analysis&lt;/strong&gt; group (&lt;strong&gt;Data Ribbon&lt;/strong&gt; page). This command invokes the &lt;b&gt;Trend Indicators&lt;/b&gt; editor dialog. The editor allows users to create/edit/delete a trend indicator.&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/trend-indicators/trend-indicators-eux-win.png" alt="" class="small" style="width:767px;height:528px;"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A new indicator is generated using default settings. Users can change indicator type, appearance setting, or settings specific to the chart series type (for example, users can select the values with which financial series indicators will be calculated: open, high, low, or close).&lt;/p&gt;

&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/trend-indicators/trend-indicators-eux-default.png" alt="" class="small" style="width:896px;height:713px;"&gt;
&lt;p&gt;Refer to the following help topics for more information: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/404406/winforms-dashboard/winforms-designer/create-dashboards-in-the-winforms-designer/dashboard-item-settings/chart/trend-indicators" target="_blank"&gt;WinForms Dashboard - Trend Indicators&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/404416/web-dashboard/create-dashboards-on-the-web/dashboard-item-settings/chart/trend-indicators?p=netframework" target="_blank"&gt;Web Dashboard - Trend Indicators&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Runtime&lt;/h2&gt;
&lt;p&gt;At runtime, you need to create a &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartTrendLine" target="_blank"&gt;ChartTrendLine&lt;/a&gt; or &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartRegressionLine" target="_blank"&gt;ChartRegressionLine&lt;/a&gt; object and add it to &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartDashboardItem.Indicators" target="_blank"&gt;ChartDashboardItem.Indicators&lt;/a&gt;. Once complete, use the API listed below to specify indicator settings.&lt;/p&gt;
&lt;p&gt;This property is required and displays the indicator in a Chart dashboard item when you launch the application:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Value" target="_blank"&gt;Value&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you do not specify the following properties, default values will be used:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Name" target="_blank"&gt;Name&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.ValueLevel" target="_blank"&gt;ValueLevel&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.ShowInLegend" target="_blank"&gt;ShowInLegend&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.LegendText" target="_blank"&gt;LegendText&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Thickness" target="_blank"&gt;Thickness&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Color" target="_blank"&gt;Color&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.DashStyle" target="_blank"&gt;DashStyle&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Visible" target="_blank"&gt;Visible&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following code snippet creates a “Sales Trend” indicator for an &lt;a href="http://ASP.NET" target="_blank"&gt;ASP.NET Core&lt;/a&gt; dashboard application:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.DashboardCommon;
using System.Drawing;
// ...
public partial class CustomIndicatorDashboard : DevExpress.DashboardCommon.Dashboard {
    public CustomIndicatorDashboard() {
        InitializeComponent();
        ChartDashboardItem chartItem = Items.First(x =&amp;gt; x.ComponentName == &amp;quot;chartDashboardItem1&amp;quot;) as ChartDashboardItem;
        ChartTrendLine trendLine = new ChartTrendLine();
        SimpleSeries simpleSeries = chartItem.Panes[0].Series[0] as SimpleSeries;
        if (simpleSeries != null) {
            trendLine.Value = simpleSeries.Value.UniqueId;
        }
        trendLine.Name = &amp;quot;SalesTrend&amp;quot;;
        trendLine.ValueLevel = DevExpress.XtraCharts.ValueLevel.Value;
        trendLine.Color = Color.Orange;
        trendLine.LegendText = &amp;quot;Sales Trend&amp;quot;;

        chartItem.Indicators.Add(trendLine);
    }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Add a Custom Indicator Type&lt;/h2&gt;
&lt;p&gt;You can create your own custom indicator type to address a specific business requirement:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create a &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartCustomIndicator?p=netframework" target="_blank"&gt;ChartCustomIndicator&lt;/a&gt; descendant that accepts a collection of data points, evaluates values, and returns resulting points. These points are used to draw the indicator.&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.IndicatorFactory.Register--1(System.String)" target="_blank"&gt;Register&lt;/a&gt; the resulting type in &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.IndicatorFactory" target="_blank"&gt;IndicatorFactory&lt;/a&gt; to make this class available as an indicator type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If using the Web Dashboard, register &lt;a href="https://docs.devexpress.com/Dashboard/js-DevExpress.Dashboard.Designer.ChartIndicatorsExtension" target="_blank"&gt;ChartIndicatorsExtension&lt;/a&gt; before the control is rendered (to add the custom indicator type to the &lt;b&gt;Trend Indicators&lt;/b&gt; editor).&lt;/p&gt;
&lt;p&gt;The following code snippet implements/registers a “Moving Average” custom indicator type in an &lt;a href="http://ASP.NET" target="_blank"&gt;ASP.NET Core&lt;/a&gt; dashboard application:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.DashboardCommon;
using DevExpress.DashboardCommon.ViewerData;
using System.Collections.Generic;

namespace asp_net_core_dashboard_control_trendline_indicators.Data {
    public class MovingIndicator : ChartCustomIndicator {
        protected override Dictionary&amp;lt;AxisPoint, object&amp;gt; Calculate(Dictionary&amp;lt;AxisPoint, decimal?&amp;gt; values) {
            var items = new Dictionary&amp;lt;AxisPoint, object&amp;gt;(values.Count);

            var sum = decimal.Zero;
            var count = 0;
            foreach(KeyValuePair&amp;lt;AxisPoint, decimal?&amp;gt; point in values) {
                if(count == 0) {
                    items.Add(point.Key, null);
                } else {
                    items.Add(point.Key, sum / count);
                }
                sum += point.Value ?? 0;
                count++;
            }

            return items;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Call the &lt;code&gt;Register&lt;/code&gt; method in your application before you save and load the dashboard (to serialize and deserialize the indicator within the dashboard&amp;#39;s XML).&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.DashboardWeb;
using TrendIndicators.Data;

namespace TrendIndicators {
    public static class DashboardUtils {
        public static DashboardConfigurator CreateDashboardConfigurator(IConfiguration configuration, IFileProvider fileProvider) {
            DashboardConfigurator configurator = new DashboardConfigurator();
            // ...
            IndicatorFactory.Register&amp;lt;MovingIndicator&amp;gt;(&amp;quot;Moving average&amp;quot;);
            return configurator;
        }
    }
}
Register ChartIndicatorsExtension before the control is rendered to add MovingIndicator type to the Trend Indicators editor.
function onBeforeRender(dashboardControl) {
    // ...
    dashboardControl.registerExtension(new DevExpress.Dashboard.Designer.ChartIndicatorsExtension(dashboardControl, {
        customIndicatorTypes: [ {
                type: &amp;#39;MovingIndicator&amp;#39;,
                displayName: &amp;#39;Moving Average&amp;#39;
            }
        ]
    }));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Open the &lt;strong&gt;Trend Indicators&lt;/strong&gt; editor and add a new trend indicator. If you followed this example, a new &lt;strong&gt;Moving Average&lt;/strong&gt; type will be available in the UI:&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/trend-indicators/trend-indicators-custom.png" alt="" class="small" style="width:471px;height:356px;"&gt;
&lt;p&gt;If you&amp;#39;d like to incorporate custom trend indicators in your BI Dashboard, please review the following examples to learn more:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-trend-indicators" target="_blank"&gt;Dashboard for ASP.NET Core - Custom Trend Indicator&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/winforms-dasboard-trend-line-indicators" target="_blank"&gt;Dashboard for WinForms - Custom Trend Indicator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What&amp;#39;s New in v23.1&lt;/h2&gt;
&lt;p&gt;If you have yet to review the features/capabilities introduced in our most recent major update, please visit the following webpage and let us know what you think of this release by responding to our online survey: &lt;a href="https://www.devexpress.com/subscriptions/new-2023-1.xml#dashboard" target="_blank"&gt;Explore Our Newest Features (v23.1)&lt;/a&gt;. &lt;/p&gt;</description>
      <pubDate>Sun, 16 Jul 2023 23:00:00 Z</pubDate>
      <dc:creator>Polina Fedorova (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387792</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2023/04/18/bi-dashboard-eap.aspx</link>
      <category domain="https://community.devexpress.com/Tags/BI+Dashboard">BI Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Chart">Chart</category>
      <category domain="https://community.devexpress.com/Tags/Conditional+Formatting">Conditional Formatting</category>
      <category domain="https://community.devexpress.com/Tags/Content+Security+Policy">Content Security Policy</category>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/eap">eap</category>
      <category domain="https://community.devexpress.com/Tags/Early+Access+Preview">Early Access Preview</category>
      <category domain="https://community.devexpress.com/Tags/Excel+Export">Excel Export</category>
      <category domain="https://community.devexpress.com/Tags/prerelease">prerelease</category>
      <category domain="https://community.devexpress.com/Tags/Roadmap">Roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v23.1">v23.1</category>
      <title>BI Dashboard — Early Access Preview (v23.1) — Trend Indicators for Charts, Excel Export for Custom Items and More</title>
      <description>&lt;p&gt;Our next major update v23.1 is a couple of months away. As such, we wanted to preview the features we expect to ship this Spring and invite all active DevExpress Universal subscribers to download our Early Access Preview (EAP). Your feedback will help us refine the features described below and allow us to ship the best possible &lt;a href="https://www.devexpress.com/products/net/dashboard/" target="_blank"&gt;royalty-free BI Dashboard platform&lt;/a&gt;&amp;nbsp;in the marketplace.&lt;/p&gt;&lt;div class="Note"&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds. &lt;br&gt;This EAP may not include all features/products we expect to ship in our v23.1 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship later this year.&lt;/div&gt;&lt;h2&gt;Custom Items —&amp;nbsp;Export to Excel&lt;/h2&gt;&lt;p&gt;v23.1 ships with extended custom dashboard item export capabilities for both WinForms and Web platforms. For the WinForms platform, the &lt;strong&gt;Export To&lt;/strong&gt; drop-down (located within a custom dashboard item’s caption) now includes an &lt;strong&gt;Export To Excel &lt;/strong&gt;option:&lt;/p&gt;
&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/custom-items-export-to-excel.png" alt="Custom Dashboard Items  - Export to Excel, DevExpress" style="width:544px;" class="small"&gt;&lt;p&gt;The Dashboard control exports custom item data in a tabular format - where each column corresponds to a data item.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/custom-items-export-to-excel-data.png" alt="Custom Dashboard Items  - Export to Excel, DevExpress" style="width:642px;" class="small"&gt;&lt;p&gt;In Web platforms, you can display the Export To option for an individual custom dashboard item within your browser-based BI Dashboard by overriding the &lt;a href="https://docs.devexpress.com/Dashboard/js-DevExpress.Dashboard.CustomItemViewer#js_devexpress_dashboard_customitemviewer_allowexportsingleitem" target="_blank"&gt;allowExportSingleItem&lt;/a&gt; method in the item’s configuration file:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;class FunnelChartItemViewer extends Dashboard.CustomItemViewer { 
   //...
    allowExportSingleItem() {
        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Refer to the following GitHub examples for more information (do not forget to install v23.1 first and convert examples). To share feedback, simply create a new DevExpress Support Center ticket.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-custom-item-gallery" target="_blank"&gt;Dashboard for ASP.NET Core - Custom Items&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/winforms-dashboard-custom-items-extension" target="_blank"&gt;Dashboard for WinForms - Custom Items&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Customize Exported Documents&lt;/h3&gt;&lt;p&gt;You can now customize generated documents (for custom dashboard items) when handling the control’s &lt;code&gt;CustomizeExportDocument&lt;/code&gt; event. To help you obtain custom item data and modify the layout of the generated document, we added the following methods in event arguments:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.CustomizeExportDocumentEventArgs.GetItemData(System.String)?v=23.1" target="_blank"&gt;e.GetItemData&lt;/a&gt; (WinForms)&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardWeb.CustomizeExportDocumentWebEventArgs.GetItemData(System.String)?v=23.1" target="_blank"&gt;e.GetItemData&lt;/a&gt; (Web)
&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardWeb.CustomizeExportDocumentWebEventArgs.GetDashboardItem(System.String)?v=23.1" target="_blank"&gt;e.GetDashboardItem&lt;/a&gt; (Web)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The code snippets below demonstrate how you can generate an XLSX document using the&amp;nbsp;&lt;a href="https://docs.devexpress.com/OfficeFileAPI/14912/spreadsheet-document-api" target="_blank"&gt;Spreadsheet Document API&lt;/a&gt; (included in our &lt;a href="https://docs.devexpress.com/OfficeFileAPI/14911/office-file-api" target="_blank"&gt;Office File API&lt;/a&gt; suite).&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/custom-items-export-to-excel-customized.png" alt="Custom Dashboard Items  - Customize Exported Document, DevExpress" style="width:341px;" class="small"&gt;&lt;h4&gt;WinForms&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;
Download and convert to v23.1 the following example: &lt;a href="https://github.com/DevExpress-Examples/winforms-dashboard-custom-items" target="_blank"&gt;Dashboard for WinForms - Custom Items&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Add the &lt;code&gt;DevExpress.Spreadsheet.v23.1.Core.dll&lt;/code&gt; and &lt;code&gt;DevExpress.Docs.v23.1.dll&lt;/code&gt; assemblies to the project.
&lt;/li&gt;&lt;li&gt;Handle the &lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardWin.DashboardDesigner.CustomizeExportDocument?v=23.1" target="_blank" rel="noopener"&gt;DashboardDesigner.CustomizeExportDocument&lt;/a&gt; event and use the code below to customize headers:&lt;/li&gt;&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using DevExpress.DashboardCommon;
using DevExpress.DashboardCommon.ViewerData;
using DevExpress.Spreadsheet;
// ...
dashboardDesigner1.CustomizeExportDocument += DashboardDesigner1_CustomizeExportDocument;
// ...
 private void DashboardDesigner1_CustomizeExportDocument(object sender, CustomizeExportDocumentEventArgs e){
    CustomDashboardItem item = dashboardDesigner1.Dashboard.Items.FirstOrDefault(i =&amp;gt; i.ComponentName == e.ItemComponentName) as CustomDashboardItem;
    
    if (item != null) {
        DevExpress.Spreadsheet.Workbook workbook = new DevExpress.Spreadsheet.Workbook();
        Worksheet worksheet = workbook.Worksheets[0];
        
        MultiDimensionalData itemData = e.GetItemData(e.ItemComponentName);
         CustomItemData customItemData = new CustomItemData(item, itemData);

        DashboardFlatDataSource flatData = customItemData.GetFlatData();
        IList&amp;lt;DashboardFlatDataColumn&amp;gt; columns = flatData.GetColumns();
        for (int colIndex = 0; colIndex &amp;lt; columns.Count; colIndex++){
            worksheet.Cells[0, colIndex].Value = columns[colIndex].DisplayName;
            worksheet.Cells[0, colIndex].FillColor = Color.LightGreen;
            worksheet.Cells[0, colIndex].Font.FontStyle = SpreadsheetFontStyle.Bold;
            int headerOffset = 1;
            for (int rowIndex = 0; rowIndex &amp;lt; flatData.Count; rowIndex++)
                worksheet.Cells[rowIndex + headerOffset, colIndex].Value = flatData.GetDisplayText(columns[colIndex].Name, rowIndex);
        }
        workbook.SaveDocument(e.Stream, DocumentFormat.Xlsx);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Web&lt;br&gt;&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;Download and convert to v23.1 the following example: &lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-custom-item-gallery" target="_blank"&gt; Dashboard for ASP.NET Core - Custom Item Gallery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install the &lt;code&gt;DevExpress.Document.Processor&lt;/code&gt; NuGet package.&lt;/li&gt;&lt;li&gt;Handle the &lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardWeb.DashboardConfigurator.CustomizeExportDocument?v=23.1" target="_blank"&gt;DashboardConfigurator.CustomizeExportDocument&lt;/a&gt; event and use the code below to customize headers:&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.DashboardAspNetCore;
using DevExpress.DashboardCommon;
using DevExpress.DashboardCommon.ViewerData;
using DevExpress.DashboardWeb;
using DevExpress.Spreadsheet;
using System.Collections.Generic;
using System.Drawing;
// ...
    public void ConfigureServices(IServiceCollection services) {
        //...
        services.AddScoped&amp;lt;DashboardConfigurator&amp;gt;((IServiceProvider serviceProvider) =&amp;gt; {
            DashboardConfigurator configurator = new DashboardConfigurator();
            // ...
            configurator.CustomizeExportDocument += Configurator_CustomizeExportDocument;

            return configurator;
        });

    private void Configurator_CustomizeExportDocument(object sender, CustomizeExportDocumentWebEventArgs e) {
        CustomDashboardItem item = e.GetDashboardItem(&amp;quot;customItemDashboardItem2&amp;quot;) as CustomDashboardItem;

        if (item != null) {
            DevExpress.Spreadsheet.Workbook workbook = new DevExpress.Spreadsheet.Workbook();
            Worksheet worksheet = workbook.Worksheets[0];

            MultiDimensionalData itemData = e.GetItemData(e.ItemComponentName);
            CustomItemData customItemData = new CustomItemData(item, itemData);

            DashboardFlatDataSource flatData = customItemData.GetFlatData();
            IList&amp;lt;DashboardFlatDataColumn&amp;gt; columns = flatData.GetColumns();
            for (int colIndex = 0; colIndex &amp;lt; columns.Count; colIndex++) {
                worksheet.Cells[0, colIndex].Value = columns[colIndex].DisplayName;
                worksheet.Cells[0, colIndex].FillColor = Color.LightGreen;
                worksheet.Cells[0, colIndex].Font.FontStyle = SpreadsheetFontStyle.Bold;
                int headerOffset = 1;
                for (int rowIndex = 0; rowIndex &amp;lt; flatData.Count; rowIndex++)
                    worksheet.Cells[rowIndex + headerOffset, colIndex].Value = flatData.GetDisplayText(columns[colIndex].Name, rowIndex);

            }
            workbook.SaveDocument(e.Stream, DocumentFormat.Xlsx);
        }
    }    &lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Improved Content Security Policy Support for ASP.NET Core Applications&lt;/h2&gt;&lt;p&gt;As you may already know, a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP" target="_blank"&gt;Content Security Policy (CSP)&lt;/a&gt; is an additional layer of security that allows the browser to recognize and mitigate certain types of risks. In our previous release (v22.2), we modified our source code to refuse script execution on the client, so you no longer need to specify the &lt;code&gt;script-src &amp;#39;unsafe-eval&amp;#39;&lt;/code&gt; CSP directive. The remaining exceptions are to specify the &lt;code&gt;unsafe-inline&lt;/code&gt; keyword for the script-src and style-src directives for our components to work correctly.&lt;/p&gt;&lt;p&gt;In our upcoming&amp;nbsp;release (v23.1), we implemented a nonce-based approach for ASP.NET Core applications. This will&amp;nbsp;allow you to disable inline styles and&amp;nbsp;execution of inline scripts (i.e., to remove the &lt;code&gt;unsafe-inline&lt;/code&gt; keyword for &lt;code&gt;script-src&lt;/code&gt; and &lt;code&gt;style-src&lt;/code&gt; directives). With this approach, we generate a cryptographic nonce (“number used once”), include it in our CSP, and add the nonce value in the nonce attribute in every script/style tag. The browser will only execute inline code that includes the correct nonce value. With this approach, a threat actor cannot include/run a malicious script, because they can’t guess the nonce value. The nonce value regenerates each time you reload the page.&lt;/p&gt;&lt;p&gt;To disable inline styles and execution of inline scripts, use the new &lt;code&gt;Nonce&lt;/code&gt; method at the Web Dashboard component level. Refer to the following GitHub example to implement nonce-based CSP in your BI Dashboard ASP.NET Core application:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/DevExpress-Examples/asp-net-core-dashboard-content-security-policy" target="_blank"&gt;Dashboard for ASP.NET Core - Content Security Policy (CSP)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Dashboard for Web — Custom Style Editor&lt;/h2&gt;&lt;p&gt;v23.1 will allow you to define a custom style for format rules used within &lt;a href="https://docs.devexpress.com/Dashboard/117161" target="_blank"&gt;Grid&lt;/a&gt;, &lt;a href="https://docs.devexpress.com/Dashboard/117165" target="_blank"&gt;Pivot&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/Dashboard/117163" target="_blank"&gt;Card&lt;/a&gt; dashboard items.&lt;/p&gt;&lt;p&gt;When you create a &lt;a href="https://docs.devexpress.com/Dashboard/117151" target="_blank"&gt;format rule&lt;/a&gt;, click on a blank square in the &lt;strong&gt;Custom Appearance&lt;/strong&gt; section to create a custom style:&lt;/p&gt;
&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/web-dashboard-create-custom-style.png" alt="Web Dashboard - Conditional Formatting, DevExpress" style="width:722px;"&gt;&lt;p&gt;This action invokes the &lt;strong&gt;Custom Style Editor&lt;/strong&gt;. In it, you can specify text color, background color, and font settings used for the format rule:&lt;/p&gt;
&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/web-dashboard-custom-style-editor.png" alt="Web Dashboard - Custom Style Editor, DevExpress" style="width:752px;"&gt;&lt;p&gt;Click &lt;strong&gt;Save&lt;/strong&gt; to save the style and apply your settings&amp;nbsp;to the dashboard item:&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/web-dashboard-custom-style-result.png" alt="Web Dashboard - Applied Custom Style, DevExpress" style="width:723px;"&gt;&lt;h3&gt;Online Demo&lt;/h3&gt;&lt;p&gt;We published an online demo to illustrate the potential of this feature: &lt;a href="https://demos.devexpress.com/preview/dashboard/?mode=designer&amp;amp;dashboardId=SalesOverview" target="_blank"&gt;BI Dashboard — Demo&lt;/a&gt;. The demo allows you to create a format rule for a Grid, Card, or Pivot dashboard item using our new Custom Style Editor. To share feedback, simply create a new DevExpress Support Center ticket.&lt;/p&gt;&lt;h2&gt;Dashboard for WinForms — Merged Data Source Wizard Page&lt;/h2&gt;&lt;p&gt;We merged the first two pages of our BI Dashboard’s Data Source Wizard. Pages previously used to select data source type and database provider have been replaced with a single page that displays a flat list of all supported data sources.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/dashbaord-merged-data-source-page.png" alt="Data Source Wizard, DevExpress" style="width:1810px;"&gt;&lt;p&gt;To invoke the Data Source Wizard, click the &lt;a href="https://docs.devexpress.com/Dashboard/17652/winforms-dashboard/winforms-designer/ui-elements-and-customization/dialogs-and-wizards/data-source-wizard" target="_blank"&gt;New Data Source&lt;/a&gt; button in the Data Source Ribbon tab.&lt;/p&gt;&lt;p&gt;We also integrated a search bar to locate a required data source:&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/data-source-page-search-bar.png" alt="Data Source Wizard, DevExpress" style="width:790px;"&gt;&lt;p&gt;The next wizard page now contains connection settings specific to the selected data connection type:&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/specific-data-provider-settings.png" alt="Data Source Wizard, DevExpress" style="width:790px;"&gt;&lt;p&gt;The following Data Source Wizard Customization API members define the new wizard page:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.DataSourceWizard.DashboardChooseDataProviderPage-1?v=23.1&amp;amp;p=netframework" target="_blank"&gt;&lt;code&gt;DashboardChooseDataProvider&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardWin.DataSourceWizard.DashboardChooseDataProviderPageView?v=23.1&amp;amp;p=netframework" target="_blank"&gt;&lt;code&gt;DashboardChooseDataProviderPageView&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We also added the &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.DataAccess.UI.Wizard.DataSourceWizardSettings.UseMergedProviderList?v=23.1" target="_blank"&gt;&lt;code&gt;UseMergedProviderList&lt;/code&gt;&lt;/a&gt; property for backward compatibility. Set &lt;code&gt;UseMergedProviderList&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt;&amp;nbsp;to use our previous wizard design.&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Chart Dashboard Item — Trend Indicators&lt;/h2&gt;&lt;p&gt;v23.1 will allow you to create and display different trend indicator types within Chart dashboard items (across all supported platforms). Trend indicators are statistical tools used to analyze data and identify patterns or relationships between variables.&lt;/p&gt;&lt;p&gt;In this Early Access Preview release, we added support for two types of trend indicators (WinForms): &lt;strong&gt;Trend lines&lt;/strong&gt; and &lt;strong&gt;Regression lines&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;A &lt;em&gt;&lt;strong&gt;Trend line&lt;/strong&gt;&lt;/em&gt; displays the general direction of associated points. It is often used to identify existing data trends and can help forecast future trends.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Unlike a Trend line, a &lt;em&gt;&lt;strong&gt;Regression line&lt;/strong&gt;&lt;/em&gt; visualizes data using a mathematical formula that minimizes the distance between the line itself and associated data points. It is used to model the relationship between two variables and can be used to make predictions about one variable based on the value of the other variable.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We are also working to create custom trend indicators and expect to add this functionality once we officially release v23.1.&lt;/p&gt;&lt;h3&gt;End-User Experience&lt;/h3&gt;&lt;p&gt;The new Trend Indicator button is available in the Ribbon’s &lt;strong&gt;Data&lt;/strong&gt; contextual page (for a Chart dashboard item).&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/dashboard-trend-indicators-button.png" alt="Chart Dashboard Item - Trend Indicators, DevExpress" style="width:223px;" class="small"&gt;&lt;p&gt;This button opens a new editor window and allows you to create a new Trend Indicator with desired settings:&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/trend-indicators-settings.png" alt="Chart Dashboard Item - Trend Indicators Settings, DevExpress" style="width:646px;" class="small"&gt;&lt;p&gt;The following indicator settings are available:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt; - Sets indicator name within the indicators collection.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Type&lt;/strong&gt; - Specifies indicator type&amp;nbsp;- Trend line or Regression Line.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Value&lt;/strong&gt; - Sets the data item from the &lt;strong&gt;Value&lt;/strong&gt; section (used to calculate an indicator).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Value Level&lt;/strong&gt; - Specifies a data point’s value (based on series type). For example, if you use &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.XtraCharts.CandleStickSeriesView?v=23.1" target="_blank"&gt;&lt;code&gt;CandleStickSeriesView&lt;/code&gt;&lt;/a&gt;, you can specify the value used to draw the indicator: Open, High, or Close.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Visible&lt;/strong&gt; - Specifies whether indicator is displayed within a chart dashboard item.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Caption&lt;/strong&gt; - Specifies the indicator’s caption displayed in the legend.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Display in Legend&lt;/strong&gt; - Specifies whether to display the indicator’s caption in the legend.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dash Style&lt;/strong&gt; - Sets the dash style used to paint the line.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Color&lt;/strong&gt; - Specifies line color.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Thickness&lt;/strong&gt; - Specifies line thickness.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Once you specify all settings, click &lt;strong&gt;Apply&lt;/strong&gt; to display the indicator within a chart dashboard item:&lt;br&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/eap-23-1/chart-with-trendline.png" alt="Chart Dashboard Item - Trend Indicators, DevExpress" style="width:667px;" class="small"&gt;&lt;h3&gt;Runtime&lt;/h3&gt;&lt;p&gt;At runtime, you need to create a &lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartTrendLine?v=23.1&amp;amp;p=netframework" target="_blank"&gt;&lt;code&gt;ChartTrendLine&lt;/code&gt;&lt;/a&gt; or &lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartRegressionLine?v=23.1&amp;amp;p=netframework" target="_blank"&gt;&lt;code&gt;ChartRegressionLine&lt;/code&gt;&lt;/a&gt; object and add it to &lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartDashboardItem.Indicators?v=23.1" target="_blank"&gt;&lt;code&gt;ChartDashboardItem.Indicators&lt;/code&gt;&lt;/a&gt;. Once complete, use the following API to specify indicator settings described above:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Name?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.Name&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Value?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.Value&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.ValueLevel?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.ValueLevel&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Use the following settings to configure trend indicator appearance:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Visible?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.Visible&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.ShowInLegend?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.ShowInLegend&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.DashStyle?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.DashStyle&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Color?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.Color&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.devexpress.com/Dashboard/DevExpress.DashboardCommon.ChartIndicatorBase.Thickness?v=23.1" target="_blank"&gt;&lt;code&gt;ChartIndicatorBase.Thickness&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following code snippet adds the same trend indicator displayed above in code:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.DashboardCommon;
using DevExpress.XtraCharts;

//...

private void btnDrawTrend_Click(object sender, System.EventArgs e) {
    ChartDashboardItem chart = dashboardDesigner.Dashboard.Items.FindFirst(x =&amp;gt; x.ComponentName == &amp;quot;chartDashboardItem2&amp;quot;) as ChartDashboardItem;
    if (chart != null) {
        dashboardDesigner.Dashboard.BeginUpdate();
        ChartTrendLine trend = new ChartTrendLine();
        OpenHighLowCloseSeries simpleSeries = chart.Panes[0].Series[0] as OpenHighLowCloseSeries;
        if (simpleSeries != null) {
            trend.Value = simpleSeries.Open.UniqueId;
        }
        trend.Name = &amp;quot;trend&amp;quot;;
        trend.Color = System.Drawing.Color.Orange;
        trend.ValueLevel = ValueLevel.Value;
        chart.Indicators.Add(trend);
        dashboardDesigner.Dashboard.EndUpdate();
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;We realize beta-testing is a time-consuming process and we are grateful to those who invest time with our EAP builds. Find the current implementation lacking flexibility? Feel we’ve overlooked a valuable usage scenario? Does our current implementation fail to address your business requirements?&lt;/p&gt; &lt;p&gt;Please post your thoughts in our &lt;a href="https://community.devexpress.com/blogs/analytics/archive/2023/02/21/devexpress-bi-dashboard-v23-1-june-2023-roadmap-survey-inside.aspx#bi-dashboard-roadmap-survey-2023" target="_blank"&gt;roadmap survey&lt;/a&gt; (if you have not yet voted) OR create a &lt;a href="https://supportcenter.devexpress.com/ticket/create" target="_blank"&gt;Support Center ticket&lt;/a&gt;. We will happily follow up and do what we can to extend the capabilities of our new products/features.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Apr 2023 00:23:00 Z</pubDate>
      <dc:creator>Polina Tyureva (DevExpress)</dc:creator>
      <dx:excerpt>Our next major update v23.1 is a couple of months away. As such, we wanted to preview the features we expect to ship this Spring and invite all active DevExpress Universal subscribers to download our Early Access Preview (EAP)...</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387768</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2023/02/20/devexpress-bi-dashboard-v23-1-june-2023-roadmap-survey-inside.aspx</link>
      <category domain="https://community.devexpress.com/Tags/BI+Dashboard">BI Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Chart">Chart</category>
      <category domain="https://community.devexpress.com/Tags/Conditional+Formatting">Conditional Formatting</category>
      <category domain="https://community.devexpress.com/Tags/Content+Security+Policy">Content Security Policy</category>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Excel+Export">Excel Export</category>
      <category domain="https://community.devexpress.com/Tags/Pivot+Grid">Pivot Grid</category>
      <category domain="https://community.devexpress.com/Tags/Roadmap">Roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v23.1">v23.1</category>
      <title>DevExpress BI Dashboard v23.1 — June 2023 Roadmap (Survey Inside)</title>
      <description>&lt;p&gt;In this post, we’ll summarize &lt;a target="_blank" href="https://www.devexpress.com/products/net/dashboard/"&gt;DevExpress BI Dashboard&lt;/a&gt;-related development plans for our mid-year update (v23.1) and hopefully address some of your questions along the way. Should you require additional information on a specific feature, or if you’d like to share a business use case that our product does not support, feel free to submit your comments in&amp;nbsp;the survey at the end of this article. We’ll be happy to follow up.&lt;/p&gt;
&lt;div class="Note"&gt;
    The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.
&lt;/div&gt;
&lt;h2 id="chart-dashboard-item--display-trendlines-and-regression-lines"&gt;Chart Dashboard Item — Display Trendlines and Regression Lines&lt;/h2&gt;
&lt;p class="tags"&gt;
    &lt;span class="platform"&gt;All Platforms&lt;/span&gt;
    &lt;br&gt;
    &lt;span class="completed"&gt;&lt;a href="https://community.devexpress.com/blogs/analytics/archive/2023/07/17/devexpress-bi-dashboard-trend-indicators-v23-1.aspx" target="_blank"&gt;Released in v23.1&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Our next release will allow you&amp;nbsp;to create and display both trend and regression line types within&amp;nbsp;&lt;a target="_blank" href="https://docs.devexpress.com/Dashboard/14719/winforms-dashboard/winforms-designer/create-dashboards-in-the-winforms-designer/dashboard-item-settings/chart"&gt;Chart Dashboard Items&lt;/a&gt;&amp;nbsp;&lt;span&gt;(across all supported platforms).&amp;nbsp;&lt;/span&gt;Trendlines and regression lines are both statistical tools used to analyze data and identify patterns or relationships between variables.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A trendline displays the general direction of associated points. It is often used to identify existing data trends and can help forecast future trends.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unlike a trendline, a regression line visualize data using a mathematical formula that minimizes the distance between the line itself and associated data points. It is used to model the relationship between two variables and can be used to make predictions about one variable based on the value of the other variable.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;img src="https://community.devexpress.com/blogs/analytics/2023-blogs/dashboard-trendline-win_.png" alt="" style="width:1560px;height:1260px;"&gt;
&lt;h2 id="pivot-grid-dashboard-item--customize-excel-export"&gt;Pivot Grid Dashboard Item — Customize Export&lt;/h2&gt;
&lt;p class="tags"&gt;
    &lt;span class="platform"&gt;All Platforms&lt;/span&gt;
    &lt;br&gt;
    &lt;span class="completed"&gt;&lt;a href="https://community.devexpress.com/blogs/analytics/archive/2023/08/17/devexpress-bi-dashboard-new-export-capabilities-v23-1.aspx" target="_blank"&gt;Released in v23.1&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;In our next release, you&amp;#39;ll be able to customize &lt;a href="https://docs.devexpress.com/Dashboard/15266/winforms-dashboard/winforms-designer/create-dashboards-in-the-winforms-designer/dashboard-item-settings/pivot?p=netframework" target="_blank"&gt;Pivot Grid Dashboard Item&lt;/a&gt; export results.&amp;nbsp;We&amp;#39;ll introduce a public API to help you to obtain the &lt;code&gt;XRPivotGrid&lt;/code&gt; object at runtime and specify its setting before&amp;nbsp;data export. For instance, you&amp;#39;ll be able to hide rows/columns, modify pivot grid field settings, specify text and data formatting, etc.&lt;/p&gt;
&lt;h2 id="web-dashboard--create-custom-styles-for-conditional-formatting"&gt;Web Dashboard — Create Custom Styles for Conditional Formatting&lt;/h2&gt;
&lt;p class="tags"&gt;
    &lt;span class="platform"&gt;ASP.NET Core&lt;/span&gt;
    &lt;span class="platform"&gt;ASP.NET WebForms&lt;/span&gt;
    &lt;span class="platform"&gt;ASP.NET MVC&lt;/span&gt;
    &lt;span class="platform"&gt;Blazor&lt;/span&gt;
    &lt;br&gt;
    &lt;span class="completed"&gt;Released in v23.1&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Once we release v23.1, you&amp;#39;ll be able to define a &lt;a target="_blank" href="https://docs.devexpress.com/Dashboard/117151/web-dashboard/create-dashboards-on-the-web/appearance-customization/conditional-formatting#appearance-settings"&gt;custom style&lt;/a&gt;&amp;nbsp;when creating format rules for Grid, Pivot and Card dashboard items. Our custom style settings dialog will allow you to specify the following style properties: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Font name&lt;/li&gt;
&lt;li&gt;Font style&lt;/li&gt;
&lt;li&gt;Text color&lt;/li&gt;
&lt;li&gt;Background color&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/web-dashboard-custom-style-dialog_full.png" alt="" style="width:1560px;height:1200px;"&gt;
&lt;h2 id="web-dashboard--content-security-policy--suppress-inline-styles-and-scripts"&gt;Web Dashboard — Content Security Policy — Suppress Inline Styles and Scripts&lt;/h2&gt;
&lt;p class="tags"&gt;
    &lt;span class="platform"&gt;ASP.NET Core&lt;/span&gt;
    &lt;br&gt;
    &lt;span class="completed"&gt;Released in v23.1&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.devexpress.com/Dashboard/404187/web-dashboard/aspnet-core-dashboard-control/content-security-policy?p=netframework" target="_blank"&gt;Content Security Policy (CSP)&lt;/a&gt; is a security feature that allows web developers to control resources a&amp;nbsp;browser is allowed to load for a given page. One of the directives that can be included in a CSP policy is &amp;quot;unsafe-inline&amp;quot;, which, as the name suggests, allows the use of inline JavaScript and CSS. However, the use of inline code can represent a security risk, as it can be easily exploited by attackers to inject malicious code into a web page.&lt;/p&gt;
&lt;p&gt;To help developers mitigate this risk, we&amp;#39;ll modify our implementation and allow web developers  to use a nonce-based approach to allow specific, trusted inline code execution. It&amp;#39;s important to note that this nonce-based approach will not only improve the security. It will also increase the performance of the website as the browser will no longer&amp;nbsp;have to evaluate the script or style on every page load.&lt;/p&gt;
&lt;p&gt;A nonce-based approach involves the use of a unique, one-time-use value that is generated for each page load and included in the CSP policy. This value, known as a &lt;em&gt;nonce&lt;/em&gt;, is then included in the &lt;em&gt;nonce&lt;/em&gt; attribute of any executed inline script or style. The browser will only execute inline code that includes the correct &lt;em&gt;nonce&lt;/em&gt; value.&lt;/p&gt;
&lt;h2 id="the-data-source-wizard-update"&gt;The Data Source Wizard Update&lt;/h2&gt;
&lt;p class="tags"&gt;
    &lt;span class="platform"&gt;WinForms&lt;/span&gt;
    &lt;span class="platform"&gt;Visual Studio Dashboard Designer&lt;/span&gt;
    &lt;br&gt;
    &lt;span class="completed"&gt;Released in v23.1&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;We will merge two first pages of our Data Source Wizard integrated into the DevExpress BI Dashboard Designer. &lt;span&gt;Pages once used to select data source type and database provider will be replaced with a single page that displays a flat list of all supported data sources (with integrated search). The following screenshot illustrates the changes you can expect in our v23.1 release cycle (please note - this is an early mockup of the interface):&lt;/span&gt;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/analytics/2023-blogs/data-source-wizard-redesign.png" alt="" style="width:1184px;height:794px;"&gt;
&lt;h2 id="bi-dashboard-roadmap-survey-2023"&gt;BI Dashboard Roadmap Survey 2023&lt;/h2&gt;
&lt;p&gt;Take our online survey to help us finalize our 2023 DevExpress BI Dashboard Roadmap.&lt;/p&gt;
&lt;p&gt;We thank you in advance for your assistance. Should you have any questions or concerns, feel free to submit&amp;nbsp;a support ticket via the DevExpress Support Center.&lt;/p&gt;&lt;div data-survey-id="8cb821dd-0de2-450d-a256-97621665c8a3" data-survey-auth-required="true"&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 20 Feb 2023 23:43:00 Z</pubDate>
      <dc:creator>Dmitry Tokmachev (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387672</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2022/10/20/data-visualization-and-analysis-tips-and-tricks-august-september-2022.aspx</link>
      <category domain="https://community.devexpress.com/Tags/2022">2022</category>
      <category domain="https://community.devexpress.com/Tags/API+Enhancements">API Enhancements</category>
      <category domain="https://community.devexpress.com/Tags/BI+Dashboard">BI Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Charts">Charts</category>
      <category domain="https://community.devexpress.com/Tags/Maps">Maps</category>
      <category domain="https://community.devexpress.com/Tags/Pivot+Grid">Pivot Grid</category>
      <category domain="https://community.devexpress.com/Tags/Tips+%26+Tricks">Tips &amp; Tricks</category>
      <title>Data Visualization and Analysis — Tips and Tricks (August - September 2022)</title>
      <description>&lt;p&gt;
    This post includes a series of interestin&lt;span&gt;g support tickets answered throughout August and September. We hope you find the contents of this post interesting and of business value. Should you have any questions about a particular support ticket, feel free to post a comment in the DevExpress Support Center.&lt;br&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#404040;font-family:&amp;#39;Open Sans Condensed&amp;#39;, HelveticaNeue-CondensedBold, Helvetica, &amp;#39;Arial Narrow&amp;#39;, Calibri, Arial, &amp;#39;Lucida Grande&amp;#39;, sans-serif;font-size:30px;font-weight:700;"&gt;Tips &amp;amp; Tricks&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;
    BI Dashboard
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
    T1113658 - How to add a watermark to the exported dashboard&lt;br&gt;
    &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1113658/bi-dashboard-add-watermark" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1112628&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;   
&lt;h3&gt;
    BI Dashboard for Web Forms
&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;
     &lt;p&gt;T1112628 - How to hide the &amp;quot;Export To PDF&amp;quot; button for a particular widget&lt;br&gt;
     &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1112628/dashboard-for-web-forms-how-to-hide-export-to-pdf-button-for-particular-widget" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1094793&lt;/a&gt;
&lt;/p&gt;
     &lt;p&gt;
      Handle the &lt;a href="https://docs.devexpress.com/Dashboard/js-DevExpress.Dashboard.ViewerApiExtensionOptions?utm_source=SupportCenter&amp;amp;utm_medium=website&amp;amp;utm_campaign=docs-feedback&amp;amp;utm_content=T1112628&amp;amp;contactId=A2121001#js_devexpress_dashboard_viewerapiextensionoptions_onitemcaptiontoolbarupdated" target="_blank"&gt;onItemCaptionToolbarUpdated&lt;/a&gt; event to customize the toolbar for a specific item. For example, if you need to remove the first export submenu for the Grid dashboard item (&amp;quot;gridDashboardItem1&amp;quot;), you can use the following code:
&lt;/p&gt;
     &lt;pre&gt;&lt;code class="language-csharp"&gt;
    function onItemCaptionToolbarUpdated(e) {
        if (e.itemName === &amp;quot;gridDashboardItem1&amp;quot;) {
            var exportMenu = 
            	e.options.actionItems.find(item =&amp;gt; item.name === &amp;#39;export-menu&amp;#39;);
            exportMenu.menu.items.splice(0, 1);
        }
    }
 &lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;T1103211 - How to use Count and CountDistinct in calculated fields&lt;br&gt;
        &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1103211/dashboard-for-web-forms-count-and-countdistinct-in-calculated-fields" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1103211&lt;/a&gt;
    &lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;T1109879 - How to use custom properties to customize Grid column options&lt;br&gt;
        &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1109879/web-dashboard-customize-grid-column-options" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1109879&lt;/a&gt;
    &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;   
&lt;h3&gt;BI Dashboard for WPF&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;T1117647 - How to add custom template to Series Labels of the Chart dashboard item&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1117647/dashboard-for-wpf-add-custom-template-to-for-series-labels" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1117647&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
You can override &lt;code&gt;ChartItemStyle&lt;/code&gt; to customize nested instances of the &lt;code&gt;ChartControl&lt;/code&gt; and associated series options. The folowing code snippet modifies the &lt;a href="https://docs.devexpress.com/WPF/DevExpress.Xpf.Charts.SeriesLabel.ResolveOverlappingMode" target="_blank"&gt;SeriesLabel.ResolveOverlappingMode&lt;/a&gt; option:
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
private void ChartControl_BoundDataChanged(object sender, RoutedEventArgs e) {
    var chart = (ChartControl)sender;
    var d = (XYDiagram2D)chart.Diagram;

    for (int i = 0; i &amp;lt; d.Series.Count; i++) {
        var label = new SeriesLabel();
        label.ResolveOverlappingMode = ResolveOverlappingMode.HideOverlapped;
        label.ElementTemplate = (DataTemplate)this.FindResource(&amp;quot;labelTemplate&amp;quot;);
        d.Series[i].Label = label;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;
&amp;lt;dx:ThemedWindow.Resources&amp;gt;
    &amp;lt;DataTemplate x:Key=&amp;quot;labelTemplate&amp;quot;&amp;gt;
        &amp;lt;Label Content=&amp;quot;{Binding Path=Text}&amp;quot; Background=&amp;quot;LightYellow&amp;quot; BorderThickness=&amp;quot;0&amp;quot;/&amp;gt;
    &amp;lt;/DataTemplate&amp;gt;
    &amp;lt;DataTemplate x:Key=&amp;quot;chartTemplate&amp;quot;&amp;gt;
        &amp;lt;dxc:ChartControl Style=&amp;quot;{Binding Path=(dxdash:DashboardLayoutItem.ViewStyle), 
        	RelativeSource={RelativeSource TemplatedParent}}&amp;quot;
            BoundDataChanged=&amp;quot;ChartControl_BoundDataChanged&amp;quot;&amp;gt;
        &amp;lt;/dxc:ChartControl&amp;gt;
    &amp;lt;/DataTemplate&amp;gt;
&amp;lt;/dx:ThemedWindow.Resources&amp;gt;
&amp;lt;Grid&amp;gt;
    &amp;lt;dxdash:DashboardControl x:Name=&amp;quot;dashboardControl1&amp;quot;&amp;gt;
        &amp;lt;dxdash:DashboardControl.ChartItemStyle&amp;gt;
            &amp;lt;Style TargetType=&amp;quot;dxdash:ChartDashboardLayoutItem&amp;quot;&amp;gt;
                &amp;lt;Setter Property=&amp;quot;ContentTemplate&amp;quot; Value=&amp;quot;{StaticResource chartTemplate}&amp;quot;/&amp;gt;
            &amp;lt;/Style&amp;gt;
        &amp;lt;/dxdash:DashboardControl.ChartItemStyle&amp;gt;
    &amp;lt;/dxdash:DashboardControl&amp;gt;
&amp;lt;/Grid&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;     
&lt;h3&gt;
    Chart for WinForms
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
 &lt;p&gt;T1113940 - How to modify the color and size of the Heatmap cells&lt;br&gt;
        &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1113940/heatmap-for-winforms-adjust-cell-colors-and-size" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1113940&lt;/a&gt;
    &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;     
&lt;h3&gt;
    Chart for WPF
&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;
     &lt;p&gt;T1116213 - How to get the position of a point via a click event on a 2DChart using MVVM patterns&lt;br&gt;
     &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1116213/chart-for-wpf-get-position-point-using-mvvm" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1116213&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    The correct MVVM approach is to use &lt;a href="https://docs.devexpress.com/WPF/DevExpress.Mvvm.UI.EventToCommand" target="_blank"&gt;EventToCommand&lt;/a&gt; behavior. Event argument conversion is implemented in the &lt;code&gt;CustomMouseButtonEventArgsConverter.Convert&lt;/code&gt; method.
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;
&amp;lt;dxmvvm:Interaction.Behaviors&amp;gt;
    &amp;lt;dxmvvm:EventToCommand
    	Command=&amp;quot;{Binding ClickCommand}&amp;quot;
        EventName=&amp;quot;MouseDown&amp;quot;
        PassEventArgsToCommand=&amp;quot;True&amp;quot;
        EventArgsConverter=&amp;quot;{local:CustomMouseButtonEventArgsConverter}&amp;quot;/&amp;gt;
&amp;lt;/dxmvvm:Interaction.Behaviors&amp;gt;
&lt;/code&gt;&lt;/pre&gt;        
&lt;pre&gt;&lt;code class="language-csharp"&gt;
public ICommand ClickCommand { get; } = new DelegateCommand(OnClick);

private static void OnClick(Point coordinates) {
	MessageBox.Show(coordinates.ToString());
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;T1115869 - How to get selected item info on XYDiagram2D&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1115869/chart-for-wpf-xydiagram2d-get-selected-item-info" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1115869&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt; 
&lt;li&gt;
&lt;p&gt;T1112366 - How to display custom labels for logarithmic x-axis&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1112366/chart-for-wpf-logarithmic-grid-lines-on-x-values-only" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1112366&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
To customize the display of axis labels, define &lt;a href="https://docs.devexpress.com/WPF/6336/controls-and-libraries/charts-suite/chart-control/axes/axis-labels#configure-custom-labels" target="_blank"&gt;Custom Labels&lt;/a&gt; as follows:   
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
var label = new CustomAxisLabel(d.sieb, d.sieb.ToString());
((XYDiagram2D)chartControl2.Diagram).AxisX.CustomLabels.Add(label);
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;     
&lt;h3&gt;
Chart for Web Forms
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;T1115381 - How to export the Chart control to PDF in Landscape mode with margins&lt;br&gt;
&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1115381/chart-for-web-forms-export-to-pdf-in-landscape-mode-with-margins" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1115381&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt; 
&lt;h3&gt;
Map for WPF
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;T1108723 - How to color track/route (MapPolylines) based on data&lt;br&gt;
&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1108723/map-for-wpf-color-track-route-mappolylines-based-on-data" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1108723&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;    
&lt;h3&gt;
 Pivot Grid for WinForms
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;T1114991 - How to avoid cell merge when exporting the Pivot Grid to XLSX in WYSIWYG mode&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1114991/pivot-grid-for-winforms-how-to-avoid-cell-merging-when-export-the-pivot-grid-to-xlsx-in" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1114991&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt; 
&lt;li&gt;
&lt;p&gt;T1115238 - How to compare two totals and color the total cell based on a comparison result&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1115238/pivot-grid-for-winforms-how-to-compare-two-totals-and-color-the-total-cell-based-on-the" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1115238&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt; 
&lt;li&gt;
&lt;p&gt;T1113267 - How to get display text for a cell by row and column index&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1113267/pivot-grid-for-winforms-how-to-get-a-cell-s-displaytext-of-given-row-and-column-index" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1113267&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Enhancements&lt;/h2&gt;
&lt;h3&gt;Chart for WinForms and WPF&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;T1110756 - How to extrapolate the Chart&amp;#39;s trend line to negative infinity&lt;br&gt;
  &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1110756/chart-control-how-do-i-draw-an-infinitely-long-line" target="_blank"&gt;https://supportcenter.devexpress.com/ticket/details/t1110756&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Set the &lt;code&gt;ExtrapolateToNegativeInfinity&lt;/code&gt; property to &lt;code&gt;true&lt;/code&gt; to extrapolate the Trend Line to negative infinity:
&lt;/p&gt;
&lt;p&gt;
WinForms: &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.XtraCharts.TrendLine.ExtrapolateToNegativeInfinity" target="_blank"&gt;TrendLine.ExtrapolateToNegativeInfinity&lt;/a&gt;&lt;br&gt;
WPF: &lt;a href="https://docs.devexpress.com/WPF/DevExpress.Xpf.Charts.TrendLine.ExtrapolateToNegativeInfinity" target="_blank"&gt;TrendLine.ExtrapolateToNegativeInfinity&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;    </description>
      <pubDate>Thu, 20 Oct 2022 01:45:00 Z</pubDate>
      <dc:creator>Margarita (DevExpress)</dc:creator>
      <dx:excerpt>This post includes a series of interesting support tickets answered throughout August and September. We hope you find the contents of this post interesting and of business value. Should you have any questions about a particular support ticket, feel free to post a comment in the DevExpress Support Center.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387603</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2022/10/03/devexpress-bi-dashboard-upcoming-features-v22-2-material-design-support-for-dashboard-viewer.aspx</link>
      <category domain="https://community.devexpress.com/Tags/Dashboard">Dashboard</category>
      <category domain="https://community.devexpress.com/Tags/Material+Design">Material Design</category>
      <category domain="https://community.devexpress.com/Tags/Roadmap">Roadmap</category>
      <category domain="https://community.devexpress.com/Tags/Themes">Themes</category>
      <category domain="https://community.devexpress.com/Tags/v22.2">v22.2</category>
      <title>DevExpress BI Dashboard — Material Design Support — Early Access Preview (v22.2)</title>
      <description>&lt;div class="Note"&gt;The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This blog post and the features/products listed within it are subject to change. You should not rely or use this information to help make a purchase decision about Developer Express Inc products.&lt;/div&gt;
&lt;p&gt;In our upcoming major release (v22.2), Material Design support will allow you to display a dashboard in an application that follows Material Design guidelines. This will allow you to maintain a solid design across the entire app.  &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://docs.devexpress.com/Dashboard/115955/web-dashboard"&gt;Web Dashboard&lt;/a&gt; components are built atop our JavaScript component suite (&lt;a href="https://js.devexpress.com/"&gt;DevExtreme&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/analytics/2022-blogs/material/dashboard-screenshot.png" alt="DevExpress Web Dashboard"&gt;&lt;/p&gt;
&lt;p&gt;DevExtreme supports two theme sets: &lt;a target="_blank" href="https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/Overview/jQuery/MaterialBlueLight/"&gt;original&lt;/a&gt; and &lt;a target="_blank" href="https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/Overview/jQuery/MaterialBlueLight/Compact/"&gt;compact&lt;/a&gt;. The original DevExtreme Material themes are great for mobile UI or touch-friendly interfaces (they use large editors, buttons, and tall data grid rows). &lt;/p&gt;
&lt;p&gt;Unfortunately, default-sized elements are not always helpful for high-density interfaces such as our &lt;a target="_blank" href="https://www.devexpress.com/products/net/dashboard/"&gt;DevExpress BI Dashboard&lt;/a&gt; (since business dashboards tend to be focused on/ working with/ displaying a lot of data). &lt;/p&gt;
&lt;p&gt;Considering this, we decided to focus our efforts on the &lt;strong&gt;compact&lt;/strong&gt; Material theme: the original version is not able to retain information detail because of increased spacing between basic elements. In the compact version, we have decreased indents, icons, and font sizes. Since these elements are smaller, you will be able to show more information on the same screen when compared to the original material theme. &lt;/p&gt;
&lt;h2 id="your-feedback-counts-an-original-or-compact-theme-"&gt;Your Feedback Counts — An Original or Compact Theme?&lt;/h2&gt;
&lt;p&gt;Please be sure to use the survey below to submit your feedback on this subject.&lt;/p&gt;&lt;div data-survey-id="56534c82-6259-448f-920e-c0ae807bc922" data-survey-auth-required="false"&gt;&lt;/div&gt;
&lt;h2 id="your-feedback-counts-an-original-or-compact-theme-"&gt;Online Demo&lt;/h2&gt;&lt;p&gt;We published an online demo to illustrate our intermediate results: &lt;a target="_blank" href="https://demos.devexpress.com/preview/dashboard/?mode=viewer&amp;amp;dashboardId=SalesOverview" title="DevExpress BI Dashboard – Material Design Demo"&gt;DevExpress BI Dashboard – Material Design Demo&lt;/a&gt;. Please use the theme selector drop down in the right upper corner to explore the appearance of the DevExpress Web Dashboard when using different Material themes:&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/analytics/2022-blogs/material/dashboard-material-theme-switch.png" alt="" style="width:1560px;height:848px;"&gt;
&lt;p&gt;
    The team and I would love to hear your feedback on our implementation. Feel free to create a &lt;a href="https://supportcenter.devexpress.com/ticket/create" target="_blank"&gt;Support Center ticket&lt;/a&gt;&amp;nbsp;and let us know what you think.
&lt;/p&gt;</description>
      <pubDate>Mon, 03 Oct 2022 01:35:00 Z</pubDate>
      <dc:creator>Dmitry Tokmachev (DevExpress)</dc:creator>
      <dx:excerpt>In our upcoming major release (v22.2), Material Design support will allow you to display a dashboard in an application that follows Material Design guidelines. This will allow you to maintain a solid design across the entire app.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387631</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2022/08/31/pivot-grid-an-overview-of-latest-enhancements.aspx</link>
      <category domain="https://community.devexpress.com/Tags/Data+Binding">Data Binding</category>
      <category domain="https://community.devexpress.com/Tags/filter">filter</category>
      <category domain="https://community.devexpress.com/Tags/Pivot+Grid">Pivot Grid</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <category domain="https://community.devexpress.com/Tags/WPF">WPF</category>
      <title>Pivot Grid — An Overview of Latest Enhancements</title>
      <description>&lt;p&gt;In this post, I’ll summarize Pivot Grid-related enhancements we’ve introduced over our last few release cycles (specifically, API changes designed to simplify product use for those targeting &lt;a href="https://www.devexpress.com/products/net/controls/winforms/" target="_blank"&gt;WinForms&lt;/a&gt;, &lt;a href="https://www.devexpress.com/products/net/controls/wpf/" target="_blank"&gt;WPF&lt;/a&gt;, and &lt;a href="https://www.devexpress.com/products/net/controls/asp/" target="_blank"&gt;web platforms&lt;/a&gt;).
&lt;/p&gt;
&lt;h2&gt;
    New Unified Binding API
&lt;/h2&gt;
&lt;p&gt;
    High on our list of objectives was to deliver a single/unified binding mechanism and to simplify overall Pivot Grid setup.
&lt;/p&gt;
&lt;p&gt;
    Pivot Grid fields use our new unified binding mechanism in the following modes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OLAP&lt;/li&gt;
&lt;li&gt;Server&lt;/li&gt;
&lt;li&gt;In-Memory (with the Optimized data processing engine enabled)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    Our updated API is built upon our fastest engine to date (we call it our Optimized Calculation Engine). As such, our unified API allow you to bind your Pivot Grid to Server Mode/OLAP data sources or to an in-memory source (our new in-memory engine is significantly faster than our older Legacy and LegacyOptimized engines).
&lt;/p&gt;
&lt;p&gt;
    If you’ve yet to explore capabilities of our new Pivot Grid data processing engine and want to compare performance to older processing modes, refer to the following help section for more information: &lt;a href="https://docs.devexpress.com/CoreLibraries/403802/devexpress-pivot-grid-core-library/pivot-grid-modes" target="_blank" rel="noopener"&gt;Pivot Grid Data Processing Modes&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    With that introduction, let’s now look at each available data binding type…
&lt;/p&gt;
&lt;h2&gt;
    DataSourceColumnBinding
&lt;/h2&gt;
&lt;p&gt;
    Use the &lt;code&gt;DataSourceColumnBinding&lt;/code&gt; class to bind Pivot Grid fields to columns within a data source or to measures/dimensions in an OLAP cube. In previous versions, you had to specify the &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.XtraPivotGrid.PivotGridFieldBase.FieldName" target="_blank" rel="noopener"&gt;&lt;code&gt;PivotGridFieldBase.FieldName&lt;/code&gt;&lt;/a&gt; property to bind Pivot Grid fields to columns within a data source.
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cs"&gt;
PivotGridField statusField = new PivotGridField() {
FieldName = &amp;quot;[Measures].[Internet Revenue Status]&amp;quot;,
Area = PivotArea.DataArea, AreaIndex = 2, Caption = &amp;quot;Status&amp;quot;, Name = &amp;quot;fieldStatus&amp;quot; };

PivotGridField quarterField = new PivotGridField() {
FieldName = &amp;quot;[Date].[Fiscal].[Fiscal Quarter]&amp;quot;,
Area = PivotArea.RowArea, AreaIndex = 2, Caption = &amp;quot;Fiscal Quarter&amp;quot;,
Name = &amp;quot;pivotGridField&amp;quot; };

pivotGridControl.Fields.AddRange(new[] { quarterField, statusField });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
    You can now use the &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.XtraPivotGrid.PivotGridFieldBase.DataBinding" target="_blank" rel="noopener"&gt;&lt;code&gt;PivotGridField.DataBinding&lt;/code&gt;&lt;/a&gt; property that is able to receive an instance of this type, along with others I will describe later.
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cs"&gt;
PivotGridField statusField = new PivotGridField() { DataBinding =
new DataSourceColumnBinding(&amp;quot;[Measures].[Internet Revenue Status]&amp;quot;),
Area = PivotArea.DataArea, AreaIndex = 2, Caption = &amp;quot;Status&amp;quot;, Name = &amp;quot;fieldStatus&amp;quot; };

PivotGridField quarterField = new PivotGridField() { DataBinding =
new DataSourceColumnBinding(&amp;quot;[Date].[Fiscal].[Fiscal Quarter]&amp;quot;),
Area = PivotArea.RowArea, AreaIndex = 2, Caption = &amp;quot;Fiscal Quarter&amp;quot;,
Name = &amp;quot;pivotGridField&amp;quot; };

pivotGridControl.Fields.AddRange(new[] { quarterField, statusField });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
    The code snippet above is from our “OLAP KPI” technical demo. To run the demo, you must have our WinForms distribution installed on your machine: &lt;a href="dxdemo://Win/XtraPivotGrid/MainDemo/CodeExamples/OLAP.OLAP_KPI" target="_blank" rel="noopener"&gt;OLAP KPI&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;
    ExpressionDataBinding and OlapExpressionBinding
&lt;/h2&gt;
&lt;p&gt;
    &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.ExpressionDataBinding" target="_blank" rel="noopener"&gt;&lt;code&gt;ExpressionDataBinding&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.OLAPExpressionBinding" target="_blank" rel="noopener"&gt;&lt;code&gt;OlapExpressionBinding&lt;/code&gt;&lt;/a&gt; allow you to bind Pivot Grid fields to calculated expressions or MDX expressions (OLAP) respectively. In addition, &lt;code&gt;ExpressionDataBinding&lt;/code&gt; can be used to implement the following Pivot Grid features:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Custom Grouping&lt;/li&gt;
&lt;li&gt;Custom Summary&lt;/li&gt;
&lt;li&gt;Custom Sorting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    For instance, the following code snippet from the &lt;a href="dxdemo://Win/XtraPivotGrid/MainDemo/CodeExamples/Grouping.Alphabetical_Grouping" target="_blank" rel="noopener"&gt;Alphabetical Grouping&lt;/a&gt; sample app groups &lt;em&gt;ProductName&lt;/em&gt; field values into three ranges: A-E, F-S, and T-Z (based on the initial characters of product names).
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cs"&gt;
// Create fieldProductName and bind it to the ProductName column in the data source.

PivotGridField fieldProductName = new PivotGridField();
fieldProductName.Area = PivotArea.RowArea;
fieldProductName.Caption = &amp;quot;Product&amp;quot;;
fieldProductName.DataBinding = new DataSourceColumnBinding(&amp;quot;ProductName&amp;quot;);
fieldProductName.Name = &amp;quot;fieldProductName&amp;quot;;
pivotGridControl.Fields.Add(&amp;quot;ProductName&amp;quot;);

// Create fieldProductGroup, specify the expression, and bind it to the created field.

PivotGridField fieldProductGroup = new PivotGridField();
fieldProductGroup.Area = PivotArea.RowArea;
fieldProductGroup.Caption = &amp;quot;Product Group&amp;quot;;
fieldProductGroup.AreaIndex = 0;
fieldProductGroup.DataBinding = new ExpressionDataBinding(
	&amp;quot;iif(Substring([ProductName], 0, 1) &amp;lt; &amp;#39;F&amp;#39;, &amp;#39;A-E&amp;#39;,
		Substring([ProductName], 0, 1) &amp;lt; &amp;#39;T&amp;#39;, &amp;#39;F-S&amp;#39;, &amp;#39;T-Z&amp;#39;)&amp;quot;);
pivotGridControl.Fields.Add(fieldProductGroup);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
    The benefit here is that you do not need to handle the &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.PivotGridControl.CustomGroupInterval" target="_blank" rel="noopener"&gt;&lt;code&gt;CustomGroupInterval&lt;/code&gt;&lt;/a&gt; event as you did in previous versions:
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cs"&gt;
pivotGridControl.CustomGroupInterval += (s, e) =&amp;gt; {
	if(!object.Equals(e.Field, fieldProductGroup)) return;
	if(Convert.ToChar(e.Value.ToString()[0]) &amp;lt; &amp;#39;F&amp;#39;) {
		e.GroupValue = &amp;quot;A-E&amp;quot;;
	return;
	}
	if(Convert.ToChar(e.Value.ToString()[0]) &amp;gt; &amp;#39;E&amp;#39; &amp;amp;x;&amp;amp;x;
	Convert.ToChar(e.Value.ToString()[0]) &amp;lt; &amp;#39;T&amp;#39;) {
	e.GroupValue = &amp;quot;F-S&amp;quot;;
	return;
	}
	if(Convert.ToChar(e.Value.ToString()[0]) &amp;gt; &amp;#39;S&amp;#39;)
	e.GroupValue = &amp;quot;T-Z&amp;quot;;
};

pivotGridControl.RefreshData();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
    Note: If you use our updated Binding API, previous grouping\sorting\summary methods that involved the following events are no longer supported:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.PivotGridControl.CustomSummary" target="_blank" rel="noopener"&gt;CustomSummary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.PivotGridControl.CustomUnboundFieldData" target="_blank" rel="noopener"&gt;CustomUnboundFieldData&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.PivotGridControl.CustomGroupInterval" target="_blank" rel="noopener"&gt;CustomGroupInterval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraPivotGrid.PivotGridControl.CustomFieldSort" target="_blank" rel="noopener"&gt;CustomFieldSort&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
    New CriteriaOperator Functions
&lt;/h2&gt;
&lt;p&gt;
    Our &lt;a href="https://docs.devexpress.com/CoreLibraries/401533/devexpress-pivot-grid-core-library/data-binding-api" target="_blank" rel="noopener"&gt;Binding API&lt;/a&gt; uses expressions for custom grouping. You can also calculate custom summaries, or sort data.
&lt;/p&gt;
&lt;p&gt;
    We added a few more expression functions to expand the range of supported usage scenarios:
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;IsTotal(Dimension1, Dimension2, ...)&lt;/code&gt; — Determines whether a total summary value is being calculated. This function helps calculate different total, grand total or last level values in a different manner.
&lt;/p&gt;
&lt;p&gt;
    &lt;code&gt;FirstValue(Value)&lt;/code&gt; — Returns the first value from rows used in an aggregate value calculation.
&lt;/p&gt;
&lt;p&gt;
    &lt;code&gt;WindowFirstValue(SummaryExpression, StartOffset, EndOffset)&lt;/code&gt; — Returns the first value of the expression within the window.
&lt;/p&gt;
&lt;h2&gt;
    Custom Aggregates
&lt;/h2&gt;
&lt;p&gt;
    We also added the ability to create and register custom aggregate functions within the Expression Editor. Registered functions can be used alongside predefined Pivot Grid methods.
&lt;/p&gt;
&lt;p&gt;
   Example: &lt;a href="https://github.com/DevExpress-Examples/how-to-implement-custom-summary-e2136" target="_blank" rel="noopener"&gt;Pivot Grid for WPF - How to Create a Custom Summary to Display the Distinct Value Count&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
    OLAP ADOMD.NET NuGet Package Support
&lt;/h2&gt;
&lt;p&gt;
    The Pivot Grid now supports the &lt;a href="https://www.nuget.org/packages/Microsoft.AnalysisServices.AdomdClient.retail.amd64/" target="_blank" rel="noopener"&gt;OLAP ADOMD.NET NuGet&lt;/a&gt; package for both .NET Framework and .NET. With ADOMD.NET you can read multidimensional schema (more than two axes), initiate queries on cubes, and retrieve results as needs dictate.
&lt;/p&gt;
&lt;h2&gt;
    Asynchronous Mode
&lt;/h2&gt;
&lt;p&gt;
    We enhanced the Pivot Grid’s asynchronous mode and made it both more usable and stable. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pivot Grid can now invoke multiple asynchronous operations simultaneously.&lt;/li&gt;
&lt;li&gt;Pivot Grid linked to &lt;a href="https://docs.devexpress.com/WindowsForms/114877/common-features/filtering-ui-context" target="_blank" rel="noopener"&gt;Filtering UI Context&lt;/a&gt; now works in asynchronous mode.&lt;/li&gt;
&lt;li&gt;The asynchronous mode API methods now return the &lt;code&gt;Task&amp;lt;&amp;gt;&lt;/code&gt; object. This simplifies usage syntax with the &lt;code&gt;await&lt;/code&gt; keyword.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    The following code snippet from the &lt;a href="dxdemo://Win/XtraPivotGrid/MainDemo/CodeExamples/OLAP.OLAP_Drill_Down" target="_blank" rel="noopener"&gt;OLAP Drill Down&lt;/a&gt; technical demo creates a drill-down data source for the selected Pivot Grid cell and displays the resulting data source within&amp;nbsp;the &lt;code&gt;DrillDownForm&lt;/code&gt; dialog in asynchronous mode.
&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cs"&gt;
pivotGridControl.CellDoubleClick += async (s, e) =&amp;gt; {
	try {
		pivotGridControl.LoadingPanelVisible = true;
		PivotDrillDownDataSource ds = await e.CreateDrillDownDataSourceAsync();
		pivotGridControl.LoadingPanelVisible = false;
		using(DrillDownForm form = new DrillDownForm(ds))
		form.ShowDialog();
	} catch(Exception ex) {
	pivotGridControl.LoadingPanelVisible = false;
	XtraMessageBox.Show(ex.Message);
	}
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;
    Documentation
&lt;/h2&gt;
&lt;p&gt;
    Refer to the help topics below for more information about Pivot Grid enhancements and code examples. Some topics are platform-independent, while others are specific to the WinForms Pivot Grid (Note that a similar set of topics is available for all supported platforms). Of course, feel free to use the search bar in the documentation section of our website to review the API for your platform of choice.
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/CoreLibraries/401533/devexpress-pivot-grid-core-library/data-binding-api" target="_blank" rel="noopener"&gt;Data Binding API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/CoreLibraries/401530/devexpress-pivot-grid-core-library/pivot-grid-modes/in-memory-mode/in-memory-mode" target="_blank" rel="noopener"&gt;Pivot Grid Data Processing Modes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/CoreLibraries/403494/devexpress-pivot-grid-core-library/advanced-analytics/custom-aggregate-functions" target="_blank" rel="noopener"&gt;Custom Aggregate Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/1846/controls-and-libraries/pivot-grid/data-shaping/grouping" target="_blank" rel="noopener"&gt;Custom Grouping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/9391/controls-and-libraries/pivot-grid/data-shaping/summarization/summaries/custom-summaries" target="_blank" rel="noopener"&gt;Custom Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/9578/controls-and-libraries/pivot-grid/binding-to-data/asynchronous-mode" target="_blank" rel="noopener"&gt;Asynchronous Mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/1846/controls-and-libraries/pivot-grid/data-shaping/grouping#custom-group-intervals" target="_blank" rel="noopener"&gt;Custom Grouping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Your Feedback Matters
&lt;/h2&gt;
&lt;div data-survey-id="4cefce36-f936-4441-aa20-47b0ba70ab2b" data-survey-auth-required="false"&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 31 Aug 2022 23:05:00 Z</pubDate>
      <dc:creator>Margarita (DevExpress)</dc:creator>
      <dx:excerpt>In this post, I’ll summarize Pivot Grid-related enhancements we’ve introduced over our last few release cycles (specifically, API changes designed to simplify product use for those targeting WinForms, WPF, and web platforms).</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:387562</guid>
      <link>https://community.devexpress.com/Blogs/analytics/archive/2022/07/07/winui-charts-api-enhancements-in-v22-1.aspx</link>
      <category domain="https://community.devexpress.com/Tags/API+Enhancements">API Enhancements</category>
      <category domain="https://community.devexpress.com/Tags/Charts">Charts</category>
      <category domain="https://community.devexpress.com/Tags/v22.1">v22.1</category>
      <category domain="https://community.devexpress.com/Tags/WinUI">WinUI</category>
      <title>WinUI Charts — API Enhancements in v22.1</title>
      <description>&lt;p&gt;With our &lt;a href="https://www.devexpress.com/subscriptions/new-2022-1.xml" target="_blank"&gt;v22.1 release&lt;/a&gt;, the DevExpress WinUI&amp;nbsp;Chart Control ships with a lightweight API hierarchy to help simplify discoverability. Said simply, we revised the Chart Control’s public API structure and decreased API member nesting levels. We also think our API is more intuitive and MVVM-friendly. &lt;/p&gt;

&lt;p&gt;In this blog post, I’ll demonstrate the new settings you’ll need to use to modify the Chart Control.&lt;/p&gt;
    
&lt;h2&gt;Axes&lt;/h2&gt;&lt;img src="https://community.devexpress.com:443/blogs/analytics/2022-blogs/20220613-winui-charts-api-enhancements-in-v22.1/axes.png" alt="" style="width:1560px;height:840px;"&gt;
   
&lt;p&gt;First, we removed the &lt;code&gt;AxisBase.AxisLabelOptions&lt;/code&gt; property and the respective class itself: The following &lt;a href="https://docs.devexpress.com/WinUI/102121/controls/charts/visual-elements/axis-labels?v=22.1" target="_blank" rel="noopener noreferrer"&gt;label&lt;/a&gt; properties are available at the &lt;code&gt;AxisBase&lt;/code&gt; class level:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.LabelAngle?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelAngle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.LabelTemplate?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelTemplate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.LabelPattern?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelPattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    
&lt;p&gt;The same kind of change was applied to the &lt;code&gt;AxisBase.AxisTitle&lt;/code&gt; property and the &lt;code&gt;AxisTitle&lt;/code&gt; class. You can now use the following &lt;code&gt;AxisBase&lt;/code&gt; class properties to set up a chart’s &lt;a href="https://docs.devexpress.com/WinUI/102120/controls/charts/visual-elements/axis-title?v=22.1" target="_blank" rel="noopener noreferrer"&gt;title&lt;/a&gt;&amp;nbsp;options&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.ShowTitle?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ShowTitle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.TitleAlignment?v=22.1" target="_blank" rel="noopener noreferrer"&gt;TitleAlignment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.TitleContentTemplate?v=22.1" target="_blank" rel="noopener noreferrer"&gt;TitleContentTemplate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We also hid &lt;code&gt;WholeAxisRange&lt;/code&gt; and &lt;code&gt;VisualAxisRange&lt;/code&gt; classes from the public API. As such, the following API members (used to define both Visual and Whole ranges) are now available at the &lt;code&gt;AxisBase&lt;/code&gt;class level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.VisualRangeStartValue?v=22.1" target="_blank" rel="noopener noreferrer"&gt;VisualRangeStartValue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.VisualRangeEndValue?v=22.1" target="_blank" rel="noopener noreferrer"&gt;VisualRangeEndValue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.VisualRangeStartValueInternal?v=22.1" target="_blank" rel="noopener noreferrer"&gt;VisualRangeStartValueInternal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.VisualRangeEndValueInternal?v=22.1" target="_blank" rel="noopener noreferrer"&gt;VisualRangeEndValueInternal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.SynchronizeVisualRange?v=22.1" target="_blank" rel="noopener noreferrer"&gt;SynchronizeVisualRange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.WholeRangeStartValue?v=22.1" target="_blank" rel="noopener noreferrer"&gt;WholeRangeStartValue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.WholeRangeEndValue?v=22.1" target="_blank" rel="noopener noreferrer"&gt;WholeRangeEndValue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.WholeRangeStartValueInternal?v=22.1" target="_blank" rel="noopener noreferrer"&gt;WholeRangeStartValueInternal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.WholeRangeEndValueInternal?v=22.1" target="_blank" rel="noopener noreferrer"&gt;WholeRangeEndValueInternal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.WholeRangeAutoCorrect?v=22.1" target="_blank" rel="noopener noreferrer"&gt;WholeRangeAutoCorrect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisBase.SideMargins?v=22.1" target="_blank" rel="noopener noreferrer"&gt;SideMargins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Series&lt;/h2&gt;

&lt;p&gt;Given the nature of changes we applied to Axes APIs, we used the same pattern for Series.&lt;/p&gt;

&lt;p&gt;Properties required to set up Series Label options and Titles for Pie and Funnel view were moved to the base &lt;code&gt;SeriesView&lt;/code&gt; class and its descendants for a series. The &lt;code&gt;SeriesView&lt;/code&gt; class now features the following API members:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.SeriesView.LabelPattern?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelPattern&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.SeriesView.LabelTemplate?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelTemplate&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.SeriesView.LabelIndent?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelIndent&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.SeriesView.ShowLabelConnectors?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ShowLabelConnectors&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.SeriesView.LabelConnectorStrokeStyle?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LabelConnectorStrokeStyle&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;To set up titles for Pie and Funnel views you must now use the following properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.ShowTitle?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeriesView.ShowTitle&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeriesView.ShowTitle?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeriesView.ShowTitle&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.Title?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeriesView.Title&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeriesView.Title?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeriesView.Title&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.TitleContentTemplate?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeriesView.TitleContentTemplate&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeriesView.TitleContentTemplate?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeriesView.TitleContentTemplate&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.TitlePosition?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeriesView.TitlePosition&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeriesView.TitlePosition?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeriesView.TitlePosition&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/analytics/2022-blogs/20220613-winui-charts-api-enhancements-in-v22.1/donuts.png" alt="" style="width:1560px;height:900px;"&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Finally, the following properties have changed from attached to regular:&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AxisY.ShowZeroValue?v=22.1" target="_blank" rel="noopener noreferrer"&gt;AxisY.ShowZeroValue&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.BarSeriesView.SideBySideBarLabelPosition?v=22.1" target="_blank" rel="noopener noreferrer"&gt;BarSeriesView.SideBySideBarLabelPosition&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeriesView.LabelPosition?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeriesView.LabelPosition&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.LabelPosition?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeriesView.LabelPosition&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.MarkerSeriesView.LabelAngle?v=22.1" target="_blank" rel="noopener noreferrer"&gt;MarkerSeriesView.LabelAngle&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Series Hierarchy Changes&lt;/h2&gt;

&lt;p&gt;With this release, we also modified the way in which Series are used in the Chart Control. A simple rule to remember is that series type now relies on the Chart Control.&lt;/p&gt;

&lt;p&gt;Examples below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CartesianChart&lt;/strong&gt; – Use &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.CartesianSeries?v=22.1" target="_blank" rel="noopener noreferrer"&gt;CartesianSeries&lt;/a&gt; descendants with this chart. For example, the &lt;code&gt;Series&lt;/code&gt; class allows you to add a common XY series that takes one value per argument. See the following help topic for more information: &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.CartesianChart?v=22.1#series-and-series-views" target="_blank" rel="noopener noreferrer"&gt;CartesianChart - Series and Series Views.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FunnelChart&lt;/strong&gt; – Use &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeries?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeries&lt;/a&gt;&amp;nbsp;objects with this chart. See the following section for more information:&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelChart?v=22.1#series-and-series-views" target="_blank" rel="noopener noreferrer"&gt;FunnelChart - Series and Series Views.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PieChart&lt;/strong&gt; – Use &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeries?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeries&lt;/a&gt; objects with this chart. See the following section for more information: &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieChart?v=22.1#series-and-series-views" target="_blank" rel="noopener noreferrer"&gt;PieChart - Series and Series Views.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This API change will allow us to introduce new series types that require two or more values per argument in the future. For example, when we introduce financial series to our WinUI Chart library, we will need four values (&amp;quot;Open&amp;quot;, &amp;quot;High&amp;quot;, &amp;quot;Low&amp;quot;, and &amp;quot;Close&amp;quot;) per argument.&lt;/p&gt;

&lt;h2&gt;Series View Hierarchy Changes&lt;/h2&gt;

&lt;p&gt;We’ve also revised the hierarchy of available series and removed some series-specific classes like &lt;code&gt;StackedBarSeriesView&lt;/code&gt; or &lt;code&gt;DonutSeriesView&lt;/code&gt;. For a complete list of classes, please review the following breaking change document:&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1095314/winui-charts-some-series-view-classes-have-been-removed"&gt;WinUI Charts - Some series view classes have been removed&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The following diagram demonstrates our new series view hierarchy:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/analytics/2022-blogs/20220613-winui-charts-api-enhancements-in-v22.1/series-view-hierarchy.drawio.png" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Now, if you’d like to create Stacked or Step charts, you need to use the following properties:&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AreaSeriesView.StackedMode?v=22.1" target="_blank" rel="noopener noreferrer"&gt;AreaSeriesView.StackedMode&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.BarSeriesView.StackedMode?v=22.1" target="_blank" rel="noopener noreferrer"&gt;BarSeriesView.StackedMode&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.LineSeriesView.StackedMode?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LineSeriesView.StackedMode&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.AreaSeriesView.InterpolationMode?v=22.1" target="_blank" rel="noopener noreferrer"&gt;AreaSeriesView.InterpolationMode&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.LineSeriesView.InterpolationMode?v=22.1" target="_blank" rel="noopener noreferrer"&gt;LineSeriesView.InterpolationMode&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To create donuts and nested donuts, use the &lt;code&gt;PieSeriesView&lt;/code&gt; class properties:&lt;/p&gt;

&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.ShowDonut?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ShowDonut&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.DonutHoleRadiusPercent?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DonutHoleRadiusPercent&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.DonutGroup?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DonutGroup&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.DonutGroupInnerIndent?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DonutGroupInnerIndent&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeriesView.DonutGroupWeight?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DonutGroupWeight&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Refer to the following help topic for a full list of available series views: &lt;a href="https://docs.devexpress.com/WinUI/102175/controls/charts/charts-gallery?v=22.1" target="_blank" rel="noopener noreferrer"&gt;Charts Gallery&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Data Source Adapter Changes&lt;/h2&gt;

&lt;p&gt;To simplify data source initialization, we renamed the &lt;code&gt;DataSourceAdapter&lt;/code&gt; class to &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.DataSource?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DataSource&lt;/a&gt; and simplified data source assignment. With v22.1, you only need to specify &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.DataSource.ArgumentDataMember?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ArgumentDataMember&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.DataSource.ValueDataMember?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ValueDataMember&lt;/a&gt; properties and disregard &lt;code&gt;DataMember&lt;/code&gt;object creation: 
    
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;v21.2&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;Charts:Series.Data&amp;gt;  
    &amp;lt;Charts:DataSourceAdapter DataSource=&amp;quot;{Binding ItemsSource}&amp;quot;&amp;gt;       
            &amp;lt;Charts:DataMember DataMemberType=&amp;quot;Argument&amp;quot;   
                               ColumnName=&amp;quot;PointArgument&amp;quot; 
                               ScaleType=&amp;quot;DateTime&amp;quot;/&amp;gt;  
            &amp;lt;Charts:DataMember DataMemberType=&amp;quot;Value&amp;quot;  
                               ColumnName=&amp;quot;PointValue&amp;quot; 
                               ScaleType=&amp;quot;Auto&amp;quot;/&amp;gt;   
    &amp;lt;/Charts:DataSourceAdapter&amp;gt;  
&amp;lt;/Charts:Series.Data&amp;gt; &lt;/code&gt;&lt;/pre&gt;
    

    
&lt;p&gt;&lt;strong&gt;v22.1&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;Charts:Series.Data&amp;gt; 
    &amp;lt;Charts:DataSource PointSource=&amp;quot;{Binding ItemsSource}&amp;quot; 
                       ArgumentDataMember=&amp;quot;PointArgument&amp;quot; 
                       ValueDataMember=&amp;quot;PointValue&amp;quot;/&amp;gt; 
&amp;lt;/Charts:Series.Data&amp;gt; &lt;/code&gt;&lt;/pre&gt;
    


&lt;h2&gt;Data Source &amp;amp; Points&lt;/h2&gt;
    
&lt;p&gt;&lt;code&gt;DataPointCollection&lt;/code&gt; and &lt;code&gt;DataPoint&lt;/code&gt; classes are used to supply static data list to a chart. We renamed these to &lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataCollection?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PointDataCollection&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointData?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PointData&lt;/a&gt;&amp;nbsp;(to follow API naming conventions).&amp;nbsp;&lt;/p&gt;

&lt;p&gt;As you can see from the code snippet above, you can now use the&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.DataSource?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DataSource&lt;/a&gt;&amp;nbsp;object along with the&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataCollection?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PointDataCollection&lt;/a&gt;&amp;nbsp;list to initialize series data:&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.Series.Data?v=22.1" target="_blank" rel="noopener noreferrer"&gt;Series.Data&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PieSeries.Data?v=22.1" target="_blank" rel="noopener noreferrer"&gt;PieSeries.Data&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.FunnelSeries.Data?v=22.1" target="_blank" rel="noopener noreferrer"&gt;FunnelSeries.Data&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also introduced a base class for point data classes -&amp;nbsp;&lt;code&gt;PointDataBase&lt;/code&gt;. The motivation for this change is to create point data entities for new series types in future release cycles. We migrated the following properties from &lt;code&gt;PointData&lt;/code&gt; to &lt;code&gt;PointDataBase&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataBase.Argument?v=22.1" target="_blank" rel="noopener noreferrer"&gt;Argument&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataBase.NumericalArgument?v=22.1" target="_blank" rel="noopener noreferrer"&gt;NumericalArgument&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataBase.DateTimeArgument?v=22.1" target="_blank" rel="noopener noreferrer"&gt;DateTimeArgument&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataBase.QualitativeArgument?v=22.1" target="_blank" rel="noopener noreferrer"&gt;QualitativeArgument&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataBase.ArgumentScaleType?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ArgumentScaleType&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.PointDataBase.ValueScaleType?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ValueScaleType&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Create Series - MVVM Style&lt;/h2&gt;

&lt;p&gt;You can now create chart series from a collection of view models with the help of the&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.ChartBase.SeriesSource?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ChartBase.SeriesSource&lt;/a&gt;&amp;nbsp;property. The&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.ChartBase.SeriesItemTemplate?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ChartBase.SeriesItemTemplate&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://docs.devexpress.com/WinUI/DevExpress.WinUI.Charts.ChartBase.SeriesItemTemplateSelector?v=22.1" target="_blank" rel="noopener noreferrer"&gt;ChartBase.SeriesItemTemplateSelector&lt;/a&gt;&amp;nbsp;properties allow you to convert a model object to a series.&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/analytics/2022-blogs/20220613-winui-charts-api-enhancements-in-v22.1/winui-series-source.png" alt="" style="width:1562px;height:510px;"&gt;

&lt;p&gt;Here’s a sample:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;UserControl 
    x:Class=&amp;quot;ChartsDemo.SeriesSourceDemo.View&amp;quot;
xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot; 
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot; 
    xmlns:local=&amp;quot;using:ChartsDemo.SeriesSourceDemo&amp;quot; 
    xmlns:dxc=&amp;quot;using:DevExpress.WinUI.Charts&amp;quot;&amp;gt; 
        &amp;lt;DataTemplate x:Key=&amp;quot;LineSeriesTemplate&amp;quot; x:DataType=&amp;quot;local:SeriesViewModel&amp;quot;&amp;gt; 
            &amp;lt;dxc:Series DisplayName=&amp;quot;{x:Bind Name}&amp;quot;&amp;gt; 
                &amp;lt;dxc:Series.View&amp;gt; 
                    &amp;lt;dxc:LineSeriesView 
                        ShowMarkers=&amp;quot;True&amp;quot; 
                        Brush=&amp;quot;{x:Bind ColorIndex, Converter={StaticResource seriesBrushConverter}}&amp;quot; 
                        ToolTipPointPattern=&amp;quot;{}{A}: ${V}K&amp;quot; 
                        LegendMarkerTemplate=&amp;quot;{StaticResource LineSeries_LegendMarkerTemplate}&amp;quot; /&amp;gt; 
                &amp;lt;/dxc:Series.View&amp;gt; 
                &amp;lt;dxc:Series.Data&amp;gt; 
                    &amp;lt;dxc:DataSource 
                        PointSource=&amp;quot;{x:Bind DataSource}&amp;quot; 
                        ArgumentDataMember=&amp;quot;Category&amp;quot; 
                        ValueDataMember=&amp;quot;SalesVolume&amp;quot; /&amp;gt; 
                &amp;lt;/dxc:Series.Data&amp;gt; 
            &amp;lt;/dxc:Series&amp;gt; 
        &amp;lt;/DataTemplate&amp;gt; 
        &amp;lt;DataTemplate x:Key=&amp;quot;BarSeriesTemplate&amp;quot; x:DataType=&amp;quot;local:SeriesViewModel&amp;quot;&amp;gt; 
            &amp;lt;dxc:Series DisplayName=&amp;quot;{x:Bind Name}&amp;quot;&amp;gt; 
                &amp;lt;dxc:Series.View&amp;gt; 
                    &amp;lt;dxc:BarSeriesView Brush=&amp;quot;{x:Bind ColorIndex, Converter={StaticResource seriesBrushConverter}}&amp;quot; ToolTipPointPattern=&amp;quot;{}{A}: ${V}K&amp;quot; /&amp;gt; 
                &amp;lt;/dxc:Series.View&amp;gt; 
                &amp;lt;dxc:Series.Data&amp;gt; 
                    &amp;lt;dxc:DataSource 
                        PointSource=&amp;quot;{x:Bind DataSource}&amp;quot; 
                        ArgumentDataMember=&amp;quot;Category&amp;quot; 
                        ValueDataMember=&amp;quot;SalesVolume&amp;quot; /&amp;gt; 
                &amp;lt;/dxc:Series.Data&amp;gt; 
            &amp;lt;/dxc:Series&amp;gt; 
        &amp;lt;/DataTemplate&amp;gt; 
        &amp;lt;local:SeriesTemplateSelector 
            x:Key=&amp;quot;selector&amp;quot; 
            LineSeriesTemplate=&amp;quot;{StaticResource LineSeriesTemplate}&amp;quot; 
            BarSeriesTemplate=&amp;quot;{StaticResource BarSeriesTemplate}&amp;quot; /&amp;gt; 
    &amp;lt;/UserControl.Resources&amp;gt; 
    &amp;lt;Grid&amp;gt; 
        &amp;lt;Grid.RowDefinitions&amp;gt; 
            &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot; /&amp;gt; 
            &amp;lt;RowDefinition Height=&amp;quot;*&amp;quot; /&amp;gt; 
        &amp;lt;/Grid.RowDefinitions&amp;gt; 
        &amp;lt;TextBlock 
            Text=&amp;quot;Sales Volume (Thousands of USD)&amp;quot; 
            FontSize=&amp;quot;18&amp;quot; 
            HorizontalAlignment=&amp;quot;Center&amp;quot; 
            TextWrapping=&amp;quot;WrapWholeWords&amp;quot; 
            Margin=&amp;quot;10&amp;quot; /&amp;gt; 
        &amp;lt;dxc:CartesianChart 
            Grid.Row=&amp;quot;1&amp;quot; 
            SeriesSource=&amp;quot;{x:Bind ViewModel.Series}&amp;quot; 
            SeriesItemTemplateSelector=&amp;quot;{StaticResource selector}&amp;quot; 
            SelectionMode=&amp;quot;None&amp;quot; 
            ToolTipEnabled=&amp;quot;True&amp;quot; 
            Margin=&amp;quot;100,0,100,0&amp;quot;&amp;gt; 
        &amp;lt;/dxc:CartesianChart&amp;gt; 
    &amp;lt;/Grid&amp;gt; 
&amp;lt;/UserControl&amp;gt;&lt;/code&gt;&lt;/pre&gt;

  

&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;

&lt;p&gt;We would love to know what you think of these WinUI-related enhancements and the changes to our WinUI Chart Control’s API.&lt;/p&gt;

&lt;div data-survey-id="971b0d1a-c52f-4bd6-9fc8-32c9386b16d3" data-survey-auth-required="true"&gt;&lt;/div&gt;

&lt;div id="gtx-trans" style="position:absolute;left:-20px;top:6674.29px;"&gt;&lt;div class="gtx-trans-icon"&gt;&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 07 Jul 2022 00:29:00 Z</pubDate>
      <dc:creator>Dmitry Tokmachev (DevExpress)</dc:creator>
      <dx:excerpt>With our v22.1 release, the DevExpress WinUI Chart Control ships with a lightweight API hierarchy to help simplify discoverability. Said simply, we revised the Chart Control’s public API structure and decreased API member nesting levels. In this blog post, I’ll demonstrate the new settings you’ll need to use to modify the Chart Control.</dx:excerpt>
    </item>
  </channel>
</rss>