DevExpress Data Blog
  • Native Support for Amazon Redshift Databases Coming to DevExpress Dashboards

    Analyzing large amounts of data is rather difficult. We have added a number of features to make this much easier with our dashboard component. Coming in the next minor release we will add support for Amazon Redshift. The beauty of this addition is that there really isn’t much to do to hook up a dashboard to Redshift:

    Data Provider Wizard

    It is simply a new data provider that will be available soon!

    Amazon Redshift Provider Parameters

    Why The Fuss?

    Great question! Amazon Redshift “is a fast, fully managed, petabyte-scale data warehouse solution that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools” (emphasis added). In essence the DevExpress Dashboard Component can interact with a system that can potentially store petabytes of data and allow the type of analysis that can reveal real insight. Clearly there are memory limitations on the client, so how can this be accomplished? The key is in the amount of data that the dashboard needs to render the actual elements: it is generally much less than the whole data set on the server. In an earlier release we added Server Mode support to the dashboard. Let me show you how this works in the context of Redshift.

    Consider the following dashboard (bound to a Redshift Database):

    Amazon Redshift Bound Dashboard

    In a traditionally bound dashboard, any filtering would trigger aggregations to happen on the web server (or client machine) directly in memory in order to return updated visualizations. In contrast, the server mode setting essentially “dumbs-down” the web server (or client) by offloading the filtering and aggregation to the provider (or database server). Any click to filter in the case of this revenue dashboard generated a query that was returned to the server:

    Amazon Redshift Query Log

    This is also the case for the Amazon Redshift provider! In fact, the query trace above was generated by exploring several different combinations of filters. Each time a filter was set, a new query was generated and sent back to the provider.

    A Word on Speed

    As you peruse the log of queries issued back to Redshift, notice that we are completely at the mercy of the database provider. In other words, we can only render the dashboard elements as fast as the data is returned (notice a couple of queries took ~3s to complete). Please use common sense and best practices for optimizing query speed in order to reduce refresh latency of dashboard elements.

    We are very excited about this new addition!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • .NET Reporting: Cascading Parameters, Sub-Bands, and More (Coming soon in v14.2)

    Since we’re on a reporting binge this week I thought I would mention a couple of new features we are adding to the reporting core.

    Cascading Parameters

    Sometimes parameters depend on the values of other parameters. While this was technically possible before, it required a bit of coding. In v14.2 we are adding the ability to have cascading parameters.

    Cascading Parameter Filter String Editor

    Notice how the rightSideParameter uses the leftSideParameter value to filter the set of data that will be shown. The resulting parameter behaves as a sub-parameter (of sorts):


    Cascading Parameter

    Steve is now nowhere to be found in the cascaded parameter. This approach could also be used to create a master-detail type dependency within the parameters themselves!

    Sub Bands

    This feature solves a ton of issues when it comes to having conditional data within a given band. Consider the scenario where you have a collection of items but certain items have additional detail and/or elements that need to be rendered. A concrete example:

    Student Report

    When a student is older than 35 there is additional information that needs to be shown. This can include additional fields, a block of text, pretty much a new band that contains stuff (technical term). How would this be done currently? With a lot of work. With the introduction of sub-bands this task becomes super simple!

    Sub Band Menu Item

    This sub-band is part of the parent band but can be conditionally, well, anything. It can be colored a certain way, have a different font, or be hidden altogether. In our case we want to show additional information when the Student is over 35:

    Sub Band Example

    In this case we set the visibility of the sub band to false (by default) and add a formatting style rule to make the appropriate checks:

    Sub Band Style Rule

    and the rule:

    Formatting Rule

    The result is exactly what we were looking to do:

    Resulting Report with Sub Bands

    With this feature you could even create alternate versions of how the data should be visualized per row and use conditional styling to enable the sub band. Technically speaking you can have as many bands as you like!

    Horizontal Anchoring

    Take a look at this gem:

    Horizontal Anchoring

    That’s right – we have finally added horizontal anchoring to our report controls!

    Anchoring Properties

    In the case above, I set the the top table to anchor to both the left and the right (while the bottom table’s horizontal anchoring is set to None).

    Table Improvements

    I’m going to be honest here, working with tables in our reporting suite is not all that fun. Let me correct that, was not that fun. We are introducting a number of table improvements which should help a ton!


    1. The ‘Insert Column’ command now inserts a new column (having its width equal to that of the current cell) and shifts the table relative to the current cell in the corresponding direction (to the left, or to the right from the current cell). This new behavior is similar to that of the ‘Insert Row’ command.
    2. The ‘Insert Row Above’ command now inserts a new row about the current cell and changes the layout of the top part of the table. If there is sufficient empty space between the table and the band’s top edges, the table’s bottom part is left intact.
    3. Cell insertion has not been affected, except that the newly added cells now inherit the appearance properties of a source cell. The following properties were affected: BackColor, BorderColor, BorderDashStyle, Borders, BorderWidth, Font, ForeColor, Padding, and TextAlignment.
    4. The ‘Delete Column’ command now deletes a column and correspondingly changes the table width (by shifting the existing columns to the right from the one that is being deleted). Selecting a column and removing it by pressing the DELETE key has the same effect on the table layout (as opposed to the previous implementation when this resulted in cell removal and then resizing of cells located to the right from the current cell).

    The following new features have also been implemented.

    • Pressing and holding the SHIFT key while resizing a column, changes the table width in the corresponding direction (the columns to the right from the current column are shifted to the left).

    Shift Resize

    • Pressing and holding the CTRL key while resizing a column, changes the width of cells in the corresponding side of this column proportionally (to maintain their width relative to the overall table width), leaving the table dimensions intact.

    Control Resize

    Final Thoughts

    Lest I forget! We have also added support to design-time report zooming when using the mouse wheel in conjunction with the control button. While a simple feature, I think it goes along with standard conventions and will help ease of use at design time.

    Overall I think v14.2 is a really strong release for our analytics’ components. I hope you do too!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • DevExpress Report Designer for the Web (Coming soon in v14.2)

    Version 14.1 saw the release of our new end user report designer built from the ground up using html5 and JavaScript. As mentioned previously, this was a CTP (or beta) release: we wanted to see how you felt about it and how the overall technology behaved. This time around we finished polishing up the designer and will be releasing a completed end user tool in v14.2 (with a new shiny “light” theme to boot).

    HTML5 End User Designer

    The new Report Designer for ASP.NET is targeted at WebForms and MVC applications. For those on the cusp of innovation, the designer has also been successfully tested with ASP.NET vNext (we are indeed forward thinking).


    • a responsive user interface for in-browser reporting on the client, provided by a brand new JavaScript/HTML5 engine
    • rich user interface includes an integrated Property Grid (equipped with a Quick Access panel to access the most common options), Data Explorer and Parameters panels
    • a brand new integrated Print Preview created from scratch to use an HTML5 engine

    HTML5 Report Preview

    • Remember the limitations? We’ve worked hard to make sure all report controls are available (including the Pivot Grid, Chart and Sparklines)

    Chart Design

    • support for snap lines and a snap grid (for easy location and alignment of report elements);
    • support for localization and switchable visual themes;
    • guaranteed cross-browser compatibility, and more.

    Report Server Integration

    As mentioned in a previous post, we were so concerned about functionality and usability that we included the new designer directly into our Report Server product. Doing so allowed the engineering team to have an internal client, of sorts, to critically take a look at implementation details as well as an objective eye towards user perspective.

    The Future

    We were also extremely forward thinking! This is a pure html5/js implementation which, as mentioned earlier, will work in ASP.NET vNext. When considering the proliferation of devices, imagine a scenario where ad-hoc reporting can even be taken to the device itself!

    Overall we are pretty excited at the type of Business Intelligence applications possible with the suite of components we are providing (and aim to improve in the future).

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • .NET Reporting: Data Access Enhancements (Coming soon in v14.2)

    This is huge. I usually don’t start blog posts this way but something about our reporting suite nagged at me: I don’t like binding reports directly to database. In fact, I’ve always advocated a multi-tiered approach for accessing data – I’ve long said binding to an IEnumerable<T> was the way to go. While our reporting suite can certainly handle this scenario, it tended to be a bit kludgy. In fact, using the BindingSource in an ASP.NET application with XtraReports required taking a dependency on System.Windows.Forms (eww).

    In our upcoming 14.2 release we swung for the fence when cleaning up this area and have hit a home run.

    Object Binding Source

    Since a picture is worth a thousand words, I thought I would take you through the process of creating an object bound report.

    Bind to Object

    After choosing an assembly you can choose the appropriate data type (still the same as before – kind of).

    Select Object

    Usually one would pick the Student class in this case given that it is that type to which we wish to bind. But since we’re swinging for the fence, I will choose the StudentService class.

    Select Method

    Yes, soak that previous screenshot in – we are binding to methods for this report. WAT?! How does it know what to bind to?? What will it pass in to the method??

    The answer to the first question is not too hard: we look at the return type. The second question is not as easy.

    Manage Method Parameters

    Just kidding, it is easy. You can either specify a value, use an expression, or tell the report to use parameters (the kind already available in XtraReports).

    Object Bound Report

    All that can be said is this:


    Now reports can form part of your application in a natural way – not as an afterthought. All of the ingenuity you use to create service classes and overall application logic can now be easily leveraged across all of your reports.

    Final Thoughts

    I am really excited about the way we are both enlarging and yet simplifying the way you access, present, and analyze data.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • WinForms and WPF Map Controls: Coordinate Systems, SQL Server Spatial Data and More (Coming soon in v14.2)

    I wanted to talk a bit more about maps! I’ve already talked a bit about the mini maps. In this post I wanted to show you some more map goodness coming in our 14.2 release.

    Cartesian Map for WinForms

    Ever wanted to visualize something other than, well, a map of the earth? In this release you can literally create a map of anything and use it as a visualization. How amazing is that?! With the addition of Cartesian Maps comes the ability to add any vector data with its own units. Currently the map control supports Centimeters, Feet, Furlongs, Inches, Kilometers, Meters, Miles, Millimeters, Nautical miles, and Yards with the ability to even add your own custom measures.

    Cartesian Map

    In this example we’ve visualized an entire hotel floor. Currently we’ve implemented the Cartesian Coordinate System for WinForms.

    SQL Geometry Support

    Some store their map data using SQL Geometry. In this release we have added support to this type of data source for WinForms:

    SqlGeometryDataAdapter adapter = new SqlGeometryDataAdapter() {
        ConnectionString = "YOUR_CONNECTION_STRING",
        SqlText = "YOUR_SQL_TEXT",
        SpatialDataMember = "YOUR_DATA_MEMBER"
    vectorLayer.Data = adapter;

    A word about WPF support for both Cartesian Coordinates and SQL Geometry: we are still working on having full support. Currently in WPF we have full support for Geographic data (whether from SQL Geography Data or some other source) and are working towards having full Cartesian support sometime in the future. We do have the CartesianCoordinateSystem which can be used in WPF to load Geometry data and convert it to Geography data.

    New Map Projections

    Sometimes a flat map just doesn't cut it:

    Map Projections

    Starting in 14.2 you can use the following projections in both WinForms and WPF: Equidistant, Lambert Cylindrical Equal Area, Braun Stereographic, Kavrayskiy, and Sinusoidal.

    Why is this useful you ask? Sometimes a map answers the pertinent data questions better when projected into a new spatial representation. Insights you would not have gleaned from a tradition flat map (which is also a projection, mind you) become more apparent when projected into new spaces.

    WPF Map Analytics

    Previously we added a number of analytics features to our map control for WinForms. In this release we are adding the same features to our WPF Map Control as well:

    WPF Map Analytics

    Map Printing

    Our powerful printing system has been expanded to allow for directly exporting maps to a report:

    WPF Map Printing

    This enables your users to find the exact portion of the map they wish to see and memorialize it forever in the form of a hard paper copy.

    Final Thoughts

    Overall these are fantastic addition to our growing staple of analysis tools. I am proud of the work we are doing to help your customers glean the pertinent information from their data, thus allowing them to make the best decisions available.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • Embedded HTML5 Designer/Viewer and Improved Report Server API (Coming soon in v14.2)

    This edition of the DevExpress Data Blog will feature some of the new things happening with our DevExpress Report Server in our upcoming 14.2 release.

    New HTML5/JS Report Viewer

    We’ve been hard at work making the Silveright Report Viewer an optional feature of the DevExpress Report Server. Coming in 14.2 there is now a configurable option to use either the old Silverlight Report Viewer or the brand-new HTML5/JS Report Viewer:

    HTML5 Report Viewer Option

    Here it is in all of its glory:

    HTML5 Report Viewer

    Now reports can be viewed on any computer (or even device) as long as it boasts a modern browser. Now I know the next question: will the new viewer be available as a standard web control? Well, kind of – more on this next week. This brings us to the next feature!

    Embedded HTML5/JS End User Designer

    We’ve gone ahead and incorporated our new Web End User Report Designer directly into our Report Server (more on our 14.2 edition of our HTML5/JS Designer later).

    HTML5 Report Editor

    This is seriously a fantastic development! Now editing reports is not confined to people using Windows, but everyone! A caveat: if you have installed the new 14.2 beta, you may have noticed that the new Designer has been enabled for editing reports – not creating new ones. Why the limitation you ask? Currently you can add a large collection of tables, views and stored procedures when creating Data Models. Generally a Data Source (note the distinction here) is a subset of the items reflected in the Data Model. We are still working on a way to create Data Sources from Data Models. Once this process is ironed out we will be able to create new reports using the Web End User Designer.

    Improved Report Server API

    Connecting to the DevExpress Report Server is really simple:

    using DevExpress.ReportServer.ServiceModel.Client;
    using DevExpress.ReportServer.ServiceModel.ConnectionProviders;
    using DevExpress.ReportServer.ServiceModel.DataContracts;
    // ... 
    // Create a connection provider.  
    ConnectionProvider connection = new GuestConnectionProvider("");
    // Initialize a report server client.  
    IReportServerClient client = connection.ConnectAsync().Result;
    // Place your code here to interact with the a report service using the created client.

    Notice that the new API is Task-based, so you can easily write asynchronous code and even use async/await. Here's a taste of how to export a report from a .NET Console Application:

    static void Main(string[] args) {
        const string serverAddress = "";
        const string targetFileName = @"c:\temp\CustomerOrderHistory.pdf";
        const int reportId = 1113;
        ReportParameter parameter = new ReportParameter() { Name = "@CustomerID", Path = "@CustomerID", Value = "ALFKI" };
        ExportToPdf(serverAddress, targetFileName, reportId, parameter);
    static void ExportToPdf(string serverAddress, string fileName, int reportId, params ReportParameter[] parameters) {
        ServiceOperationBase.DelayerFactory = new ThreadingTimerDelayerFactory();
        IReportServerClient client =
            new GuestConnectionProvider(serverAddress).ConnectAsync().Result;
        //new ServerUserConnectionProvider(serverAddress, "demo", "demo").ConnectAsync().Result;
        //new WindowsUserConnectionProvider(serverAddress).ConnectAsync().Result;
        Task exportTask = Task.Factory.ExportReportAsync(client, new ReportIdentity(reportId), new PdfExportOptions(), parameters, null);
        File.WriteAllBytes(fileName, exportTask.Result);

    Although the type of interaction has been available in our 14.1 release (see T155725 and E5062), we've added a whole slew of Task-based methods for many of the common Report Server scenarios.

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • .NET Dashboard: Filter Elements & Element Grouping (Coming soon in v14.2)

    One of the powerful features we decided to add at the outset of development was the ability to use dashboard elements themselves as filter sources and targets. Not only did we make Grids, Pies, Charts, et al visualize data, but we also endowed them with the ability to act as controls to filter other data. This feature makes our dashboard product pretty powerful. What if you want to present a clearer methodology for filtering? A more traditional approach? In this release we are adding new dashboard elements whose sole purpose is to filter:

    1. ComboBox.
    2. DropDown with multiselection.
    3. ListBox with multiselection.
    4. RadioGroup.
    5. TreeView.

    Dashboard Filter Elements

    The ComboBox or DropDown with multiselection elements allow the filtering of multiple values while occupying a small part of the dashboard real-estat. The TreeView filter element addresses the filtering of hierarchies. For instance, you can filter out a product made by a specific manufacturer or month in a particular year.

    TreeView Filter Element

    You can also define filtering scope by integrating several dashboard items into a group via the new Group dashboard item. You can control whether or not filtering happens within the group or the entire dashboard through a single element option.

    Element Grouping also offers a way to elegantly subdivide a dashboard into subareas.

    Element Grouping

    Overall I am pretty excited about these features. Wait till you hear about the other dashboard feature we will be releasing in 14.2 (more to come!)

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • .NET PivotGrid Server Mode & ASP.NET PivotGrid Virtual Scrolling (Coming soon in v14.2)

    One of the powerful tools in our analysis toolbox is our PivotGrid. In our effort to continue innovating in this area we are adding two new features in our upcoming 14.2 release.

    ASP.NET Virtual Scrolling

    Currently the ASPxPivotGrid control has horizontal scrolling. In 14.2 we are introducing the vertical scrolling feature as well. This would be fairly lackluster if I proceeded to explain how to bind to the entire dataset on the server. Au contraire, in the upcoming virtual paging mode, the Pivot Grid control loads portions of data asynchronously when your customers are scrolling through the data in the grid.


    Indeed, paging is now for amateurs. Also, you can theoretically scroll through an infinite amount of data, FOREVER! How is this possible you ask? That brings us to the next feature!

    Server Mode

    The most critical aspect of a control which processes data is performance. Traditionally one would have to set up an OLAP cube if they wanted to get the best performance out of the PivotGrid. This is often fraught with dragons and falling off the edge of the earth type issues. In this release we are introducing an alternative option: Server Mode. The core idea is that we are creating Linq expressions on the fly when doing grouping and aggregating and then sending the requests to the server. In other words, the database is doing all of the heavy number crunching when grouping and aggregating. Trust me, database systems have near 40 years worth of research into how to make these types of thing work fast and well – USE THEM!!

    When should I do this you ask? Let’s divide your data into three categories:

    1. Small-ish – use in-memory techniques
    2. Large but not huge – this is the sweet spot in my opinion (the category where the majority of users fall) – use the new Server Mode
    3. Huge – in this case it would definitely be better to use OLAP (remember the 40 years of research?). OLAP was designed primarily for this case.

    My suggestion is to go in that order (1 through 3) and only move down the list if you are noticing performance issues. To use this new Server Mode you need to use the following Data Sources when binding to data using the Pivot Grid:

    • ASP.Net - EntityServerModeDataSource and LinqServerModeDataSource;
    • Windows Forms - EntityServerModeSource and LinqServerModeSource;
    • WPF - EntityServerModeDataSource and LinqServerModeDataSource.


    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

  • WinForms, ASP.NET and WPF Charts: More on Adaptive Chart Layout (Coming soon in v14.2)

    I thought I would share a little more detail on the upcoming adaptive chart layout feature coming in our 14.2 release. Previously resizing a chart would produce something like this:

    Standard Chart Without Adaptive Layout

    While the chart still looks good, the data bars (the essential part of the chart) are being overshadowed by other non-essential elements. The adaptive chart layout feature is designed to help this particular problem.

    Enabling Adaptive Layouts

    The adaptive chart layout feature is enabled by default and you don't need to write any line of code to implement this functionality in your application. Just make sure the ChartControl.AutoLayout property is set to true.

    How does it work?

    Inside any chart there are a number of elements that have a Visibility (WinForms, ASP.NET) or Visible (WPF) property (e.g., a legend, an axis, an axis title, a chart title). These elements are systematically hidden as the chart becomes smaller. In addition to those elements, if a BarSeriesLabel.Position property is set to BarSeriesLabelPosition.Auto  we automatically modify the position with respect to the chart size. Take a look:

    Chart With Adaptive Layout

    In case of pie and donut charts, the Dimension property for SimpleDiagram and SimpleDiagram3D is calculated automatically during resizing. For instance, when you decrease chart size, all pies (donuts) are placed in one line horizontally (by row) or vertically (by column) in the diagram to occupy all of the available free space.

    Pie Chart With Adaptive Layout

    To disable the adaptive layout feature, set the ChartControl.AutoLayout property to false.

    This subtle, but important, feature is another step towards truly intelligent data visualizations that not only look great, but adapt to your customers’ constraints.

  • WinForms and WPF Mini Maps (Coming soon in v14.2)

    Maps are amongst the few visualizations that can show a myriad of dimensions in a cogent way. One of the challenges with maps is simultaneously understanding both the micro (zoomed in) and the macro (zoomed out) levels. In the next major release of the DevExpress Map Control we are going to introduce a new visual element to help – a Mini Map or Map Preview.

    The following image shows the WPF MapControl with an enabled Mini Map.

    WPF Mini Map

    The XAML code is just as you would expect:

        <dxm:MiniMap Alignment="TopRight">
            <dxm:BingMapDataProvider BingKey="{Binding Source={StaticResource bingKey}}"/>
      <!-- more regular map stuff -->


    The mini map allows customizing items and mini map elements using styles (WinForms) and templates (WPF). Also, you can change a mini map’s alignment and size as well.

    Mini Map Size and Alignment


    The mini map supports two behavior modes: fixed and dynamic.

    When a mini map operates in fixed behavior mode, its center point and zoom level are fixed. Otherwise, when its behavior is dynamic, mini map settings are changed according to the zoom level and center point of the owner map.

    Fixed behavior mode in WinForms:

    Fixe Behavior Mode

    and dynamic behavior mode (WinForms):

    Dynamic Behavior Mode

    Data Binding

    You can specify layers used by a mini map as well. The mini map supports two layer types: MiniMapImageTilesLayer and MiniMapVectorItemsLayer.

    The image tiles layer supports the Bing Maps and OpenStreet Map data providers.

    The vector items layer allows using one of the following vector layer data adapters.

    • ListSourceDataAdapter
    • ShapefileDataAdapter
    • KmlFileDataAdapter
    • SqlGeometryDataAdapter
    • MapItemStorage
    • SqlGeometryItemStorage
    • BubbleChartDataAdapter
    • PieChartDataAdapter

    Mini Map Layers

    In essence you pretty much have a map within a map!

    As always, if there are any comments and/or questions, feel free to get a hold of me!

    Seth Juarez
    Twitter: @SethJuarez

2 3 4 5 6 7 8 9 10

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at or call us at +1 (818) 844-3383


DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, Delphi, HTML5 or iOS & Android development. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2018 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners