Mehul Harry's DevExpress Blog

This Blog


Mehul Harry is the DevExpress Web Program Manager. Follow him on twitter: @Mehulharry

Subscribe (RSS, Email)


  • Web Dashboard Now Supports .NET Core (CTP)

    The DevExpress Web Dashboard can now work on the latest .NET Core framework. While this is a pre-release (CTP), we're excited about this news and want to get your feedback.

    .NET Core

    The .NET Core 2.0 framework provides several benefits such as performance, flexible deployment, and cross-platform support. That means that you can run our Web Dashboard on Windows, macOS, and Linux.

    For example, here is the Web Dashboard running on Linux (click image for larger version):

    With .NET Core you can create ASP.NET Core Razor Pages, MVC Views and Controllers, Web API, use Docker, and more.

    Getting started

    To test our Dashboard in .NET Core locally, please download the latest v17.2 today from

    We've also prepared documentation to help you get started using the DevExpress Web Dashboard in ASP.NET Core:

    Create an ASP.NET Core Designer application

    Project Status

    Once again, this is a CTP version. Report any issues, missing functionality, or suggestions as regular Support Center tickets. We'll be happy to review your feedback and optimize the API based on what we hear. This also serves as a reminder that the API is subject to change until we officially release.

    In this CTP version, the Web Dashboard control does not support the following features:

    1. OLAP mode
    2. Export
    3. Localization

    We'll continue to work on these features for the final release.

    Help Us With Survey

    Your feedback will help us decide the future direction. Please take a minute to fill out this short five question survey about your plans for ASP.NET Core usage:

    .NET Core Survey -

    Are you excited by the DevExpress Web Dashboard now with the ability to run on .NET Core framework? Drop me a line below.



    Twitter: @mehulharry

  • ASP.NET Spreadsheet Enhancements - Adaptive Dialogs and more (Coming soon in v17.2)

    Check out these enhancements to the DevExpress ASP.NET Spreadsheet control that are coming in the v17.2 release:

    Adaptive Dialogs

    The Spreadsheet Control's dialogs will all be adaptive. This means that the dialog's content is automatically resized according to the screen resolution. To achieve this, we used the FormLayout and Popup controls in adaptive mode. The upgrades the FormLayout and Popup controls will also be available to you in the coming release. I'll discuss these other controls in a future blog post.

    Check out the Spreadsheet's adaptive dialog in action here:

    Bookmark navigation

    The Spreadsheet Control now gives you the ability to navigate through documents using bookmarks:

    For your power Spreadsheet users, they will find this feature handy to easily move around large documents.

    Full screen at startup

    Now you can display the Spreadsheet Control in full-screen mode on page load simply by setting the server-side property value: FullscreenMode.

    ASP.NET MVC supported

    All of these features are also available for the DevExpress ASP.NET MVC Spreadsheet control too.

    Try it today

    You can test these new features today by downloading the DXperience v17.2 Beta that is available in your download center (for existing customers).



    Twitter: @mehulharry

  • ASP.NET TreeList Enhancements (Coming soon in v17.2)

    Check out these great enhancements the DevExpress ASP.NET TreeList is getting in the next major release, v17.2.

    The DevExpress ASP.NET TreeList and GridView controls are similar in features and API. One of the major features missing in the DevExpress ASP.NET Treelist control was the ability to filter data. So in 2017, we worked hard and think you'll be happy with the results.


    Starting with the v17.2 release, we are providing filtering support for the DevExpress ASP.NET TreeList control. You'll be able to filter your data in the same manner as you do in the GridView control. Let's dive in and see all the different ways:

    1. Search Panel

    The DevExpress ASP.NET TreeList allows you to filter data and highlight search results via its integrated Search Panel. It's an easy way to find the data by typing the filter criteria in the search panel editor.

    Simply enter the text in the Search Editor and the TreeList will display the records matching your criteria:

    2. Data Filter Row

    The filter row allows users to filter data by entering text in the editors displayed below individual column headers. Each editor builds a FilterExpression for the corresponding column using typed text and chosen filter operator in FilterRow menu.

    You can see it in action here:

    3. Header Filter

    Another enhancement is HeaderFilter mechanism that displays a dropdown with a list of unique values of the specified column. By selecting one or more values, you'll be able to quickly filter for the matching criteria:

    4. Built-in FilterBuilder

    We've also integrated the excellent FilterBuilder into the TreeList.

    The FilterBuilder is a powerful tool that provides the most flexible approach for filtering data. With FilterBuilder you'll be able to build filter criteria of any complexity with unlimited number of conditions and logical operators.

    Unbound Columns

    We're also introducing support for Unbound Columns, which allow you to add columns to to the TreeList without needing a data source.

    Unbound columns can be populated manually by handling corresponding events or by specifying an UnboundExpression that is used to evaluate the values. You can sort, group, and filter unbound columns in the same way as data-bound columns.

    ASP.NET MVC supported

    All of these features are also available for the DevExpress ASP.NET MVC TreeList control too.

    Try it today

    You can test these new features today by downloading the DXperience v17.2 Beta that is available in your download center (for existing customers).



    Twitter: @mehulharry

  • HTML5 JavaScript Scheduler Improvements (v17.2)

    Check out the new features of the DevExtreme HTML5 Scheduler widget that are coming in the v17.2 release. These features improve the Scheduler appearance and also help you to customize both appointments and views.

    Display Several Days, Weeks and Months

    Different tasks may require different planning periods. For example, training sessions require semesters, agile software development - iterations, etc. With the upcoming release, we've added a capability to display a custom period on a view by specifying an intervalCount option.

    This option is available as a part of the view config. For example, here we set the interval for two work weeks:

        // …
        views: [
            name: "2 Work Weeks",
            type: "workWeek",
            intervalCount: 2

    Indicate the current time

    Another feature in v17.2 for the Scheduler widget helps you to distinguish between past and future appointments, as well as tasks. The Scheduler will now provide a specific indicator that highlights the current day and time on views with the time scale. Note that the indicator changes its position with the interval that's specified in the indicatorUpdateInterval option.

    The indicator is visible by default. You can hide it by setting the showCurrentTimeIndicator option to false.

    Additionally, you can apply shading to cover the timetable up to the current time by assigning true to the shadeUntilCurrentTime option.

    Limit number of full-sized appointments per cell

    Previously, the Scheduler could show only two full-sized appointments in a cell, while collapsing others. This approach was not flexible and also didn't allow for showing more appointments on wider screen displays.

    With v17.2, you can change the number of full-sized appointments per cell using the new maxAppointmentsPerCell option. This allows you to specify a strict limit on displayed appointments, calculate it automatically, or even remove the limitation. On exceeding the limit, appointments no longer become collapsed; instead, they are removed to an appointment collector, from which you can easily drag appointments back to the timetable.

    Now, appointments in the appointment collector's drop-down list do not have an Edit button because a click on an appointment opens the edit form. Use the dropDownAppointmentTemplate option to customize these appointments.

    Cell Size Customization

    With v17.2, you can easily customize cell sizes keeping all elements aligned. Simply specify the desired cell width and height using the dx-scheduler-cell-sizes-horizontal and dx-scheduler-cell-sizes-vertical CSS classes.

    Angular, ASP.NET MVC/Core, & More!

    Note that all these new features are available on all the frameworks we support: Angular, jQuery, Knockout, ASP.NET MVC, and .NET Core.

    Try it now

    The new features of our dxScheduler widget are included in the v17.2 pre-release that is available via npm right now. Please note that this pre-release may contain some bugs and is not intended to be used in production:

    npm install devextreme@17.2.2-pre-beta

    Learn more about DevExtreme's pre-releases in this blog post.

    What do you think about the DevExtreme Scheduler's improvements in the next release? Drop me a line below.


    Twitter: @mehulharry

  • Easily Add DevExtreme ASP.NET MVC Controls to .NET Core Visual Studio Projects (Coming Soon in 17.2)

    The DevExtreme MVC Controls work great with the ASP.NET Core 2.0 framework but what if you've got an existing project?

    To help you get started with using DevExtreme MVC Controls in ASP.NET Core 2.0 projects, we've upgraded "Add DevExtreme to the Project" option in the upcoming v17.2 release.

    Context Menu - Single Click

    This tool, long familiar to our ASP.NET customers, is now available for ASP.NET Core projects, too. Right-click on your Visual Studio 2017 project and select the menu option:

    Then you'll see a confirmation dialog. Select 'Yes' to run the tool.

    Once it starts, the tool will help you to include the necessary references, scripts, styles, and also modify the important project files such as Startup.cs and NuGet.config. You can still do this manually but this tool saves you a ton of time.

    When the tool is done, it'll display the following 'Readme page' which details the changes made and also recommends that you complete the last small but important step:

    IMPORTANT: Complete the conversion

    There is one final important step you need to complete after running this tool. The goal of this tool is to make enough changes to enable using DevExtreme MVC Controls in your .NET Core projects. However, we didn't want to modify your _Layout.cshtml file, more on this below.

    The final step requires you to switch to use a new file which we add to the project called: _DevExtremeLayout.cshtml. This file contains the references that are needed in the head section (and elsewhere) to use DevExtreme MVC Controls in your existing project.

    Unlike ASP.NET MVC 5 projects (which we refer to as "classic MVC"), in .NET Core there are no bundles. Instead, there is now a hierarchy of <environment>, <script>, and <link> tag helpers that are used. This gives developers more flexibility, however, for automated tools, it can complicate your process.

    We understand that in existing projects the _Layout.cshtml and the corresponding sections of it can be highly customized. Therefore, we don’t try to parse and patch it. Instead we provide two alternatives to complete adding DevExtreme to your project:

    1. Either switch to the ready-to-use new layout _DevExtremeLayout.cshtml (which is the same as the one used in projects created from DevExtreme ASP.NET MVC Project Templates)

    2. -OR- modify your existing layout by following the recommendations from the mentioned Readme page

    I want to stress, that the tool's primary purpose is to add DevExtreme to your existing projects. If you create a new project then please use our DevExtreme Project templates instead as they have everything setup already. They're available in the Web, .NET Core, and DevExtreme sections of the 'New Project' dialog.

    Watch the webinar

    I recommend watching this recent webinar which goes over the process of using the updated tool:

    Try it now

    You can test these new features today by downloading the DXperience v17.2 Beta that is available in your download center (for existing customers).

    What do you think about the DevExtreme MVC Controls in ASP.NET Core 2.0? Drop me a line below.


    Twitter: @mehulharry

  • ASP.NET GridView Enhancements - Merged Groups, Header Filter Search, & More (Coming soon in v17.2)

    In the next major release, v17.2, we're adding some great new features to the DevExpress ASP.NET GridView. All the features below will be available for both the ASP.NET WebForms and ASP.NET MVC versions of our GridView:

    Merged Column Grouping

    We're introducing a new way to display grouped rows in the ASP.NET GridView control. Currently, you can display grouped rows so that the first grouped column is displayed above the other columns and the data is nested underneath:

    Starting with v17.2, you can now use the new option that will remove the nested group rows and merge them into a single 'grouping line':

    This saves space and also provides more space to display data rows. This is an option so both display types are available, however, I prefer the merged grouping. This feature was inspired by our excellent WinForms Grid control.

    Header Filter Search

    We're also improving the Grid's Header Filter feature by adding a search text box. Take a look at this animation to see it in action:

    The new 'header filter search' can help your end-users save even more time when searching through a large number of records.

    Easier Exporting API

    Another improvement in the next release is that we've moved the export functionality from the ASPxGridViewExporter to ASPxGridView class. Now you can export the Grid using a single line of code: grid.ExportTo...

    This change also helped us to create export commands for the ToolBar and Context Menu. We've updated all our export demos by using toolbar export items. You can see an example of this by downloading v17.2 beta today or wait till the official v17.2 release when we'll update our online demos too.

    Adaptive Popup Dialogs

    And last but not least is another great adaptive feature.

    Starting with v17.2, we now use the Popup Control's Adaptive feature for all of the GridView's inner popup controls: HeaderFilter, EditForm, and FilterBuilder. This feature will make using the excellent DevExpress ASP.NET GridView control better and make sure that the results look good on mobile devices.

    For example, here's the ASPxGridView's PopupEditForm on a desktop browser:

    When you view the same PopupEditForm on a mobile device, the new adaptive dialog will look like this:

    The new feature is disabled by default but you can customize it using the Grid.SettingsPopup.EditForm.SettingsAdaptivity.Mode property. For example:

    ASPxGridView.EditFormLayoutProperties.SettingsAdaptivity.AdaptivityMode = SingleColumnWindowLimit
    ASPxGridView.SettingsPopup.EditForm.SettingsAdaptivity.Mode = OnWindowInnerWidth

    Other ASPxGridView popup elements like 'Header Filter Popup' and 'Filter Builder Popup' will be adaptive by default.

    Try it today

    You can test these new features today by downloading the DXperience v17.2 Beta that is available in your download center (for existing customers).



    Twitter: @mehulharry

  • New HTML5 JavaScript Filter Builder Widget (v17.2)

    In the v17.2 release, we're introducing a powerful new widget that helps your end-users to build complex filter criteria: the DevExtreme Filter Builder widget.

    DevExpress is known for great UI controls with powerful features. And if you've used other DevExpress platforms like ASP.NET then you'll be happy to hear that DevExtreme now offers this as well.

    Filter Builder Helps You Find Data

    The Filter Builder widget provides advanced filter and criteria options to help end-users filter data with an unlimited number of conditions combined by logical operators. Therefore, it helps you to build filter criteria using logical operators that anyone can easily understand.

    By adding this ability to specify complex filters in your UI, you can save time for end-users and improve productivity when working with large amounts of data.

    The following code shows how to create a filter builder:

        fields: [ {
                dataField: "Product_Name"
            }, {
                caption: "Cost",
                dataField: "Product_Cost",
                dataType: "number",
                format: "currency"
            }, {
                dataField: "Product_Current_Inventory",
                dataType: "number",
                caption: "Inventory"
        value: [
            ["Product_Current_Inventory", "<>", 0],
                ["Product_Name", "contains", "HD"],
                ["Product_Cost", "<", 200]

    Filter Other Widgets

    The Filter Builder widget is a stand-alone widget that can be combined to be used to filter other DevExtreme widgets whose data source supports filtering. For example, widgets like the HTML5 JavaScript DataGrid or TreeList:


    The following code demonstrates how to use filter editor with DevExtreme List, PivodGrid (excluding XmlaStore), TreeView and other DevExtreme widgets:

    var widgetDataSource = widgetInstance.getDataSource();

    To help you get started with our new Filter Builder widget, we have prepared several technical demos and also included the Filter Builder in the DevAV demo. These demos will be available with the v17.2 release.

    Common Usage Scenario

    A social network is a good example where complex filter expressions can be helpful. People often set up a filter when looking for a person they want to find, and they generally specify the name, age, country, town, professional position, etc. - the more conditions they specify the faster they find a person they were looking for.

    We even 'dogfood' (aka test and promote) our own products internally. And after using it internally for our own projects, we are positive that you'll love this new widget as much as we do.

    Here is an example of how Filter Builder widget can be used to filter developer tasks:

    Angular, ASP.NET MVC/Core, & More!

    The new dxFilterFuilder widget will be available on all the frameworks we support: Angular, jQuery, Knockout, ASP.NET MVC, and .NET Core.

    Try it now

    The new dxFilterBuilder widget is included in the v17.2 pre-release that is available via npm right now. Please note that this pre-release may contain some bugs and is not intended to be used in production:

    npm install devextreme@17.2.2-pre-beta

    Learn more about DevExtreme's pre-releases in this blog post.

    What do you think about the new Filter Builder widget? Drop me a line below.


    Twitter: @mehulharry

  • DevExtreme Case Study: ISDK Information Systems

    Hearing customer stories about real-world usage of our controls is a treat.

    That's why I was happy to read about ISDK Information Systems use of our excellent client-side JavaScript library: DevExtreme.


    The company had several big goals to address:

    • Integration and aggregation of data from disparate IT systems
    • Creation of single task center based on Microsoft SharePoint corporate portal
    • Development of visualization and monitoring tool for key programs and project and their KPIs
    • Development of mobile client for tablets and wide format devices allowing to show key aggregated data and KPI on dashboards and do quick task assignments

    They chose DevExtreme and were able to achieve their goals. In fact, they were so happy with the solution that they reached out to us (and we appreciate it).

    Dashboard & Mobile

    ISDK Information systems has developed a solution that is fast, includes dashboards, and address their mobile clients too:

    Mobile client for tablets includes dashboards for aggregated project information – target KPIs and dates, actual statuses and key issues with the ability to quickly create and assign tasks. Average mobile application response time with stable Internet connection is 1 second or less.

    Here's a screenshot of their slick solution:

    Read The Case Study

    I recommend you read their story here:

    Case Study: ISDK Information Systems

    I hope this inspires you to make your own great software with DevExtreme. Do you have a story to share with us about your DevExpress usage then send me an email?


    Twitter: @mehulharry

    Your Next Great .NET App Starts Here

    Year after year, .NET developers such as yourself consistently vote DevExpress products #1.

    Experience the DevExpress difference for yourself and download a free 30-day trial of all our products today: (free support is included during your evaluation).

  • Search Integrated into More DevExtreme HTML5 JavaScript Widgets (v17.2)

    The DevExtreme HTML5 JavaScript widgets provide a number of ways to help your end-users work with a large amount of data that is presented in our UI controls. For example, the data grid widget provides excellent features like paging, filtering, and searching to help you find the information you need.

    With the v17.2 release, we're extending the search functionality to many of our other widgets too.

    TreeView and List

    With the upcoming release, we have added the searchValue option for the dxList widget. We've also extended the search capabilities for both TreeView and List widgets by adding the following options:

    searchEnabled, searchExpr, searchMode, and searchEditorOptions

    Learn more about these options by reading the v17.2 documentation

    In previous versions, we added the Search functionality to the TreeView widget. With v17.2, you can now customize that search further. For example, in the code below, we've setup placeholder text for the search textbox:

    treeViewOptions: {
        searchEnabled: true,
        searchMode: "contains",
        searchEditorOptions: {
            //TextBox config
            placeholder: "Search..."

    The same search textbox can be enabled for the List widget too. In this sample, we're limiting our search expression to only the "Name" and "Price" fields:

    listOptions: {
        searchEnabled: true,
        searchExpr: ["Name", "Price"]

    DataGrid and TreeList

    The DevExtreme HTML5 JavaScript DataGrid and TreeList widgets also have improved search functionality. I recommend reading these two posts that dive deeper into these widgets:

    One feature I'd like highlight is the updated 'column chooser' that also has search functionality now. This can help you when you have several columns in your widget. To show the search box, turn on the columnChooser.allowSearch option.

    dataGridOptions: {
        columnChooser: {
            enabled: true,
            allowSearch: true

    Once enabled, you'll see the search textbox in the column chooser:

    To provide quicker access to values, we have also added a built-in search box to the header filter. It can be enabled both at the widget and specific column levels:

    treeListOptions: {
        headerFilter: {
            allowSearch: true //all columns
        columns: [{
            headerFilter: {
                allowSearch: true //specific column

    Once enabled, you'll see the search textbox in the column's header filter:


    We have also integrated search into the HTML5 JavaScript PivotGrid's Header filter. It's available inside the Field Panel as well as the PivotGridFieldChooser. The Field Chooser also allows you to search by fields. Your end-user will find this useful because helps when:

    • there are a large number of fields
    • some of them are grouped by properties and are not visible
    pivotGridFieldChooserOptions: {
        allowSearch: true

    Angular, ASP.NET MVC/Core, & More!

    Note that all these new features are available in the DataGrid and PivotGrid Angular components, ASP.NET MVC and .NET Core controls, and jQuery widgets too.

    Try it now

    The new features of our dxTreeView, dxList, dxTreeList, dxDataGrid and dxPivotGrid widgets are included in the v17.2 pre-release that is available via npm right now. Please note that this pre-release may contain some bugs and is not intended to be used in production:

    npm install devextreme@17.2.2-pre-beta

    Learn more about DevExtreme's pre-releases in this blog post.

    What do you think about the search improvements in the next release? Drop me a line below.


    Twitter: @mehulharry

  • DevExtreme ASP.NET MVC: New Strongly-Typed HTML Helpers (Lambda Expressions Ftw!) - v17.2

    Strongly-typed HTML helpers are great when you're constructing your view in ASP.NET MVC. Helper methods like the built-in @Html.TextBoxFor(m => m.FirstName) have been around for a long time. And they provide benefits like compile-time checking of views, Razor support, and enable the use of data annotations to automatically configure important options like validation rules.

    Since we released the DevExtreme ASP.NET MVC Controls, they have included a set of HTML helper methods to help you do things like setting up the DevExtreme editors. For example, here we're creating a DevExtreme MVC DateBox control that will be bound to our OrderDate field from the model:

    @Html.DevExtreme().DateBoxFor(m => m.OrderDate)

    In one line, we're creating the editor and binding it, magic!

    More Lambda Expressions

    In the next major release, v17.2, we've extended the ability to use expressions within our HTML helpers. We have added more lambda expressions to our larger widgets. This allows to use them to configure items like:

    • DataGrid and TreeList columns
    • DataGrid summaries
    • PivotGrid fields
    • Items of our Form control

    Therefore, the DataGrid control can now be declared using this syntax:

        .Columns(columns => {
            columns.AddFor(m => m.CategoryName);
            columns.AddFor(m => m.ProductName);
            columns.AddFor(m => m.ProductSales);
        .Summary(s => s.TotalItems(total => { 
                .AddFor(m => m.ProductSales) 

    Notice the generic type argument of the DataGrid<Sale>() and AddFor calls configuring columns and total summary without the use of any string constants.

    Previously, the column would be declared using strings like so: columns.Add().DataField("CategoryName");. The new lamdba expressions approach is better for the reasons listed below and makes you more productive.

    IntelliSense support

    One of the best things about using lambda expressions is that you get IntelliSense in your Razor views based on the type:

    Data Annotations

    A nice feature of the AddFor method is that it infers useful information about the property. This information includes the property name and data type.

    And we also process the model's data annotations. For example, if any members of the Sale class are annotated with the Display attribute, then it will be automatically assigned as the column caption:

    public partial class Sale { 
        [Display(Name = "Category")] 
        public string CategoryName { get; set; }
        [Display(Name = "Product")] 
        public string ProductName { get; set; } 
        [Display(Name = "Sales")] 
        public Nullable<decimal> ProductSales { get; set; } 

    Better Validation

    If your data is annotated with Validation attributes, such as [Required], [StringLength], [Range], etc, then DevExtreme MVC will honor and apply them to column validation options of DataGrid or TreeList. So, when using expressions, you get client-side validation configured automatically for you.

    Typed Form Control!

    The new strongly-type HTML helpers also enables us to implement 'highly-requested' customer scenarios like this one for a 'typed Form control' sample:

    @(Html.DevExtreme().Form<Employee>().Items(items => { 
        items.AddSimpleFor(m => m.FirstName); 
        items.AddSimpleFor(m => m.LastName); 
        items.AddGroup().Caption("Address").Items(addressItems => { 
            addressItems.AddSimpleFor(m => m.Address); 
            addressItems.AddSimpleFor(m => m.Region); 
            addressItems.AddSimpleFor(m => m.PostalCode); 

    Optional but recommended

    You don't have rewrite your existing code because this new functionality is completely optional. You can continue to use strings, and existing projects will work fine after the upgrade. I suspect that after reading about the benefits above that you'll consider using them in a future project. Which is what I recommend, that you use expressions for newer projects.

    Lambda expressions are available in both the classic ASP.NET MVC and the new ASP.NET Core versions of our library. You can use them regardless of the app language, be it C# or VB.NET.

    We like them so much that we've updated all of our demos and project templates to use expressions (where possible).

    What do you think about the strongly-typed HTML helper improvements in the next release? Drop me a line below.


    Twitter: @mehulharry

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, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. 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-2017 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners