Quantcast
Channel: Developer Express Global
Viewing all 3390 articles
Browse latest View live

Blog Post: Blazor Components - New TagBox, Button, Theme, and more Enhancements (available in v19.2.3)

$
0
0

In this post, I'll discuss the most recent enhancements to the DevExpress UI for Blazor (v19.2.3). This update incorporates features and changes introduced in our most recent beta.

New "Blazing Berry" Theme

Our new "Blazing Berry" theme is now available. It was built with Bootstrap v4:

We love the new theme so much we made it our default for our online Blazor demos.

Download, or clone, the themes from our free open source GitHub repository here:

https://github.com/DevExpress/bootstrap-themes

New TagBox

A new TagBox component has been added in this release. As you know, a TagBox is an editor which allows your end users to select or type multiple items and display them in a text area.

Use the AllowCustomTags property to enable custom item input.

Filtering

Our Blazor TagBox ships with 'Contains' and 'StartsWith' filter modes. When filtering is enabled, the drop-down list is automatically filtered once an end user starts typing.

Virtual Scrolling

Our Blazor TagBox also supports Virtual Scrolling (to help you work with large data sources). In this mode, the TagBox loads a small item set and additional items are dynamically loaded from the server when an end user scrolls the drop-down list.

Template

You can customize default tag appearance using the TagBox's Tag Template.

Data Validation

Add our TagBox to the standard Blazor EditForm to leverage built-in Data Validation features:

New Button

We now offer a Blazor Button component with support for nine standard Bootstrap styles and three display modes. The Button component ships with the following states: default, hovered, focused, and disabled.

You can also create custom buttons.

Data Grid

Row Preview Template

You can now customize Blazor Data Grid rows via our preview row template. The layout of the preview section is located below each data row:

Note: Use the ItemInfo object to retrieve regarding the current row's data object.
<RowPreviewTemplate Context="ItemInfo"> @{ Employee employee = ItemInfo.DataItem;
  <table cellpadding="5" cellspacing="0">
    <tbody>
      <tr>
        <td rowspan="4" style="border: 0px;">
          <img src="images/Employees/@(employee.FileName).png" width="76" /></td>
        <td style="border: 0px; white-space: normal;"> @employee.Notes </td>
      </tr>
    </tbody>
  </table>
  }
</RowPreviewTemplate>

New UI Elements in Pager

Our Blazor Data Grid offers improved UI navigation elements for paging. The new Page Size selector allows your end users to specify page size as needed. You can also add custom values to the Page Size drop-down list.

We added a Go To Page edit box so users can navigate to a specific data page:

We've also updated the Data Grid Pager's public API so you can manage our new UI elements.

New Row Initialization

This release includes a new InitNewRow event. The event allows you to set custom row values when an end user adds a new row to the grid.

Task OnInitNewRow (Dictionary<string, object> values) {
{
    values.Add("Field1Name", Field1Value);
    values.Add("Field2Name", Field2Value);
    ...
    return Task.CompletedTask;
}
Note: As the example above demonstrates, this new event handler should return the Task object so the new row will initialize asynchronously.

Charts

Axis Type Selections

Typically, the Chart component automatically creates an axis depending on your data. With this release, we've now added the following axis types which can be set in code: Continuous, Discrete, or Logarithmic.

Hide Spin Edit Buttons

Our Blazor Spin Edit now allows you to hide spin buttons using its new ShowSpinButtons property.

Popup

Header and Footer

With this release, we have improved the appearance of our Blazor Popup component. You can add custom content to the Popup's footer using the new FooterTemplate:

The Popup can now display internal scroll bars when the dialog contains lots of content. Unless hidden, the header and footer will also be displayed with scroll bars.

We've also added a new Visible property which can be easily bound to a Boolean field to control the popup's visibility.

Updated XAF's Blazor UI & Example with Security System APIs

For our XAF customers: We've updated our online XAF Blazor demo based on release versions of DevExpress Blazor components.

Even if you do not plan to use XAF's UI, you may find this new non-XAF Blazor Server demo and tutorial helpful. It demonstrates how to use DevExpress Blazor components with XAF's non-visual APIs for user authentication and group authorization. For more information on our business application framework for .NET developers, please follow the XAF Team blog.


Blog Post: CodeRush - 2020 Roadmap

$
0
0

Here's what you can expect from the IDE Tools Team in 2020:

CodeRush in Visual Studio

CodeRush for Visual Studio continues to improve and evolve. In 2020 we expect to focus on quality and performance, and introduce a number of clever functional improvements all around.

  • Performance and stability. We want to improve our ability to diagnose and reproduce issues. We want to improve UI performance so dialogs, windows, and menus all appear much faster, and the product feels more instantaneous and responsive across the board.
  • Improve feedback collection. We are building diagnostics into CodeRush that can detect performance issues and collect additional data that can help us make CodeRush even faster. As always, you get to decide if you want to send us that Non-personally Identifiable Information (NPII), but if you do, we're going to make sending diagnostics data easier than ever.
  • Code analysis improvements
  • Port missing refactorings from CodeRush Classic
  • Visual and Navigational Improvements to Code Places
  • Nav Mode (faster/easier/visual code navigation)
In addition to these directions, our intention is to continue to stay on top of customer requests, integrating popular requests (or really great ideas) into each sprint.

Speaking of sprints, the CodeRush team will continue to release a new version of CodeRush every thirty days or so.

Ventures into VS Code

As you may have seen with our release of RushNav a few months ago, we are spending some time playing in the VS Code space. We're looking to push these efforts further in 2020, with the following functionality (possibly) appearing in one or more future DevExpress extensions for VS Code:

  • TypeScript/Javascript refactorings
  • Templates and Code Snippets for popular frameworks such as Angular, Blazor, and React.
  • C# refactorings
  • Rich Comments and Image Embedding
  • TypeScript/Javascript code analysis

CodeRush Server

CodeRush Server is also expected to get some love in the form of the following:

  • Port to .NET Standard
  • Continue to improve code analysis with new CodeRush diagnostics
  • Usability improvements

If you have any questions about our 2020 Roadmap or if you’d like to discuss your development needs further, please post a comment below. We’ll be happy to follow up.

Blog Post: DevExtreme (Angular, React, Vue, jQuery) - 2020 Roadmap

$
0
0
First and foremost – our thanks to everyone who reviewed our preliminary DevExtreme 2020 Roadmap last year. Your feedback helped us refine our development plans and to finalize our 2020 Roadmap.

Should you have any questions about our 2020 Roadmap or if you’d like to discuss your development needs further, please post a comment below. We’ll be happy to follow up.

Important Note: The features listed below should be available for Angular, React, Vue, and jQuery simultaneously. Exceptions are highlighted.

Official Product Release Schedule

We released community tech previews of several major components in 2019. We expect to officially ship the following products in 2020. 

DevExtreme Gantt Control for Angular, React, Vue and jQuery (v20.1)

We will officially release DevExtreme Gantt in our first major release of 2020 (v20.1). DevExtreme Gantt will ship with the following new features: 
  • Localization support
  • New toolbar with commands to edit default items and add custom items
  • New Current Time Marker to indicate current date and time
  • Data validation support
  • Custom task color support
  • Touch device support
In our second release of 2020 (v20.2) we’ll add the following capabilities to our Gantt Control for Angular, React, Vue, and jQuery:
  • Export the Gantt content to PDF, PNG, etc.
  • Template support (Gantt chart tasks)
  • Context menu customization
  • Task Detail dialog customization.

    DevExtreme Diagram for Angular, React, Vue and jQuery (v20.1-v20.2)


     We will officially release DevExtreme Diagram in 2020. v20.1 will include the following features:
    • Performance enhancements
    • Custom shape templates
    • New UI that offers additional workspace for a document. This should improve user experiences on mobile and tablet devices.
    • Dash, dot, and other types of lines for shapes and connectors
    • Support for touch devices
    v20.2 will include the following new features:
    • Toolbar and context menu customization
    • New API to refresh Diagram document when a data model is changed outside the component
    • Text validation in shapes and connectors
    • Automatically resize shapes based on text content
    • New API to restrict end-user operations such as shape resizing, dragging, adding or removing shapes, dragging shapes out of container, etc.
    • Shape rotation support

      DevExtreme File Manager for Angular, React, Vue and jQuery (v20.1)

      Our first release of 2020 (v20.1), will include a production version of the JavaScript File Manager component for Angular, React, Vue and jQuery. It will include the following new features:
      • Upload and download files via our ArrayFileProvider
      • Declarative column customization using component options
      • New API to manage file and directory selection and control end-user actions on UI elements
      • Intuitive file management error handling support
      • Notification and Progress panel UX enhancements
      • Item hover and selection within the thumbnail view
      • Touch device support enhancements

        DevExtreme Architectural Enhancements

        For the last couple of years, we worked to extend our product line’s features and delivered multiple new products to address a broad range of usage scenarios. Throughout next year, we will dedicate significant resources to evolve existing capabilities and improve our product line’s architecture:

        Reduce JS/CSS Bundle Sizes (v20.2)

        Smaller production bundles (or code chunks) offer the following benefits:
        • Less time to compile application source code.
        • Less time to deploy applications to hosting servers.
        • Less time to deliver apps to end-user web browsers (better UX).

        SCSS Support 

        We will migrate existing DevExtreme LESS styles to the more modern SCSS format and make them available to everybody. You will be able to integrate DevExtreme SCSS styles into your application build process. This will allow you to precisely customize CSS styles and minimize resulting CSS bundles. The SCSS team recently announced a new-generation module system. We plan to fully support this new system. 

        Improved Code Splitting

        Code Splitting allows web developers to group application code into multiple small bundles and reduce initial load time. To help maximize its benefits, we hope to organize DevExtreme into smaller/functionality specific modules (for instance, we want to give you the option to use a read-only Data Grid without bundling any of its data editing features).

        Efficient Tree Shaking

        Tree shaking is the process of removing unused code during the bundling process. We plan to refactor our codebase to allow JS bundling tools to tree-shake DevExtreme products more efficiently.

        Improved Responsiveness/Adaptivity (v20.1-v20.2)

        We will create and publish a fully responsive real-world DevExtreme application built from ground up. We want it to look and work perfectly on any screen – from wide desktops and tablets to mobile phones. Adaptability enhancements can be applied to many components from Toolbars and Menus to our DevExtreme Scheduler and DataGrid. 

        DevExtreme DataGrid/TreeList

        New Export to Excel API (v20.1)

        Export to Excel will be made more flexible and robust approach via the ExcelJS library.
        Our new export capabilities will give you granular control over the Excel file generation process. We’ll do our best to make the migration process as smooth as possible. For a limited time, both options (old and new) will work side by side.
        We expect to deliver the following features prior to official release:
        • Introduce transparent (WYSIWYG) export of our DataGrid’s column format.
        • Export the DataGrid’s filter configuration as Excel worksheet column filters.
        • Fully document our new export to Excel API.
        • Demonstrate popular usage scenarios via technical demos.

        Remote Validation Support (v20.1)

        We’ll extend Asynchronous Validation Rule support in DataGrid/TreeList cells in row and batch editing modes.

        API Enhancements (v20.1-v20.2)

        We plan to improve the design-time experience of both our DataGrid and TreeList when using MVVM-like reactive frameworks such as React, Vue, and Angular. You’ll be able to work with the component state via bindings/properties rather than via instance methods. For instance, you’ll be able to bind expanded detail row IDs in the markup instead of calling the ‘expandRow’ and ’collapseRow’ methods.
        We will allow you to track and control the following DataGrid and TreeList states:
        • Expanded group rows
        • Expanded master-detail rows
        • Expanded adaptive rows
        • DataSource properties (items, totalCount, summary)
        • Load panel visibility
        • Validation state (invalid cells, error text and position)
        In addition, we plan to introduce the following API enhancements:
        • Add new editing-related ‘saving’ and ‘cancel’ events
        • Allow you to manipulate DataGrid/TreeList data without using a CustomStore

        DevExtreme PivotGrid

        New Export to Excel API (v20.2)

        We received a lot of positive feedback about the new Export to Excel API mentioned in the DataGrid section above and expect to extend it to DevExtreme PivotGrid in 2020.

        UI Components

        Editors & Form Layout

        Label Animations (v20.1)

        According to Material Design Guidelines, editor placeholder text can turn into a label once the editor obtains focus. We plan to support this feature.

        DevExtreme HTML/Markdown Editor

        Table Support (v20.2 or later)

        DevExtreme HTML/Markdown Editor (CTP) core is based on the open-source implementation known as Quill. Quill 2.0 was expected in 2019 and was purported to offer a new API with table support. Unfortunately, Quill 2.0 has yet to be released. Since we consider table support as a must-have feature, we can’t ship RTM before we find a way to implement tables. If Quill 2.0 is not released or we can’t deliver this capability with Quill 1.x, this feature may not be released in 2020.

        Upload Images via a Form, Drag-and-Drop, and Copy/Paste (v20.2 or later)

        Though we were unable to deliver this feature in 2019, we have prepared a custom solution you can use today. We expect to integrate this feature once we resolve the table support issue mentioned earlier.

        DevExteme Scheduler

        Hour Values within the Recurrence Form (v20.1)

        We will allow users to specify the ‘hour’ portion of a recurrence pattern within the DevExtreme Scheduler Recurrence Form.

        Sticky Group/Resource Names (v20.1)

        When scrolling a very wide or a very high group, names can exceed visible boundaries. With our new implementation, sticky names can remain visible during scroll operations.

        Virtual Scrolling (v20.2)

        To help improve overall performance and usability, we will add a new virtual scrolling mode to our Scheduler component. When enabled, only visible appointments will be rendered.

        Data Visualization

        Annotations in Maps, Pie and Polar Charts (v20.1)

        We recently introduced chart annotations. We plan to extend this capability to Maps, Pie and Polar Charts.

        Custom Position of Chart Axes (v20.1)

        We planned to release this feature in 19.2 but failed to do so. Please, refer to our discussion page for more information.

        Additional Customization Options (v20.2)

        We’ll allow you to use templates to render images (or other custom content) within chart axis labels.

        Application Templates

        Authentication UI Templates (Angular, React, Vue) (v20.1-v20.2)

        We want to extend our existing Login Form template with a new Sign Up, Reset/Change Password form template. We will also implement corresponding client-side user workflows so you can integrate our forms with your backend authentication API.

        Native React Components

        Native React Grid

        Export to Excel (v20.1)

        Export the contents of the DevExtreme React Grid to Excel (including options to configure formatting).

        Row Reordering (v20.1)

        We’ll create a plugin that allows a user to alter record order via drag-and-drop.

        Popup Editing (v20.1)

        We’ll allow users to edit a grid record in a separate popup form.

        Detail Editing (v20.1)

        Your users will be able to edit records within an inline detail form.

        Keyboard Navigation (v20.2)

        We’ll allow your users to navigate through Grid cells via the keyboard.

        Batch Editing (v20.2)

        A user will be able to edit, create or delete multiple records and then save or cancel changes in a single batch operation.

        Native React Scheduler

        Resources & Grouping (v20.1)

        Assign resources to appointments and visualize appointments grouped by resources.

        Compact Appointment View (v20.2)

        We’ll allow you to group multiple appointments into a single item if space is limited (if we are unable to display all appointments simultaneously).

        Timeline View (v20.2)

        We will introduce a new type of view to display schedule timelines. You can find an example of a timeline here.

        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.

        Blog Post: How to Show Toast Notifications in WinForms Apps

        $
        0
        0

        Toast Notifications (or simply Toasts) are flat notifications first introduced in Microsoft Windows 8. They pop up in the bottom right corner of your screen and can be accessed through the Windows Action Center. You can incorporate these notifications in your next Windows Forms app by using the DevExpress ToastNotificationManager component. To see toasts in action, launch our "Outlook Inspired App" demo and wait for it to load its notifications.

        Our WinForms Toast Notification Manager offers nine notification templates/styles - including a Windows 10 "Generic" template that allows you to incorporate user interaction controls such as buttons or editors.

        Application Shortcut

        The DevExpress WinForms Toast Notification Manager generates genuine Windows toasts. These toasts are just like system notifications:

        • Toasts appear even if the associated application is closed.
        • Toasts can be accessed from the Action Center.
        • Toasts use the same color scheme as the operating system.

        To deliver this capability, we had to use native Windows APIs and follow all Microsoft guidelines and requirements. This included Microsoft’s application shortcut requirement.

        Unfortunately, Microsoft’s application shortcut requirement has caused some confusion in the past. We recently made a minor design-time improvement and added a new section to the component's documentation page to help address this issue going forward.

        In its Toast Notifications Overview Microsoft explicitly states that if an app does not have a shortcut in the Windows Start screen, it cannot display toasts.

        Since Start screen shortcuts are stored in the %AppData%\Microsoft\Windows\Start Menu\Programs folder, we need to follow a simple rule: To display toasts, add an application shortcut to Start Menu folder.

        Our component includes a "Create Application Shortcut" link in its smart tag menu. Once you click this link, your app will correctly display notifications.

        As some of you have discovered, our "Create Application Shortcut" command adds a shortcut to one’s personal Start screen. Said differently, the PC that created the application shortcut is the only machine able to display toasts… No other machine’s Start screen has a shortcut to your app. If you want to display toasts for all users (and not just yourself), remember to configure your application installer to add a shortcut (with a valid AppUserModelID) in the %AppData%\Microsoft\Windows\Start Menu\Programs folder.

        We believe that your best option is to use an installer to add this shortcut to user machines. If this is not an option or if you don’t have an installer, you can use the DevExpress.Data.ShellHelper.TryCreateShortcut method to add the appropriate shortcut.

        using DevExpress.XtraBars.ToastNotifications;
        using DevExpress.Data;
        
        //if there's no app shortcut in the start screen, add it
        if (!ShellHelper.IsApplicationShortcutExist("My Test App")) {
            ShellHelper.TryCreateShortcut(
                applicationId: manager.ApplicationId,
                name: "My Test App");
            //restart the app
            Application.Restart();
        }

        Please note that the TryCreateShortcut method is less reliable than the alternative. First and most important - your app may not have the necessary permissions to write files into system folders. Second, note the use of the Application.Restart method in the code snippet above. If the application is already running, adding its shortcut to the Start screen will not enable toasts. Application restart is required.

        Activator and COM Server

        Windows retains toast notifications in its Action Center.

        Normally, Action Center clears all toasts after a user closes this screen (if a user opens, closes, and opens the Action Center again, it will be empty). Some toasts, however, can remain in the Action Center until a user manually dismisses them. Such toasts remain in the Action Center even after a user logs out and back into Windows. Additionally, these toasts launch their parent applications when clicked. To display such notifications, create a custom Activator - a descendant of the DevExpress.XtraBars.ToastNotifications.ToastNotificationActivator class.

        [Guid("39697E4E-3543-4414-A694-90097B433DC6"), ComVisible(true)]
        public class ToastNotificationActivatorCustom : ToastNotificationActivator {
        
            public override void OnActivate(string arguments, Dictionary<string, string> data){
                //specify what happens when a user interacts with a toast
            }
        }

        You will need to register this custom Activator. Set the component's ApplicationActivator property at design time or call the RegisterApplicationActivator method in code.

        toastNotificationsManager1.RegisterApplicationActivator(
        		typeof(ToastNotificationActivatorCustom));

        You will also need to register a COM Server. To do so, call the DevExpress.Data.ShellHelper.RegisterComServer method. Note that if you use the ShellHelper class to create an application shortcut, you need to use a TryCreateShortcut method overload that takes the activatorType parameter. Otherwise, if you use the application installer to add the application shortcut, the installer must also add the HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{-your-GUID-here-}\LocalServer32 registry key with a path to application executable file as a value.

        if (!ShellHelper.IsApplicationShortcutExist("My Toast Application")
        {
            ShellHelper.TryCreateShortcut(
                 Process.GetCurrentProcess().MainModule.FileName,
                 toastNotificationsManager1.ApplicationId,
                 "My Toast Application",
                 @"D:\Work\Images\_Icons\ico\chain-icon.ico",
                 typeof(ToastNotificationActivatorCustom));
            ShellHelper.RegisterComServer(
                Process.GetCurrentProcess().MainModule.FileName,
                typeof(ToastNotificationActivatorCustom));
        }

        GUIDs

        When working with toasts, you will need several unique IDs.

        • For the component's ApplicationID property
        • For the ID property of every notification
        • For the Guid attribute that labels an Activator class

        You can mash a keyboard to generate a unique ID, but a more effective approach is to use an online GUID generator (such as this one) or the generator included in Visual Studio ("Tools | Create GUID").

        Deliver Critical Notifications

        Even if you set up everything correctly, a notification may not delivered to a user. Delivery can be affected by:

        • an older OS version
        • notifications disabled in Action Center settings
        • internal errors, etc.

        In such circumstances, you can handle the ToastNotificationsManager.Failed event to deliver critical messages to users via alternative methods (such as a standard message box).

        using DevExpress.XtraBars.ToastNotifications;
        using DevExpress.XtraEditors;
        
        void manager_Failed(object sender, ToastNotificationFailedEventArgs e)
        {
            if ((string)e.NotificationID == "toast_connection_lost_id_das0ud0q94")
            {
                IToastNotificationProperties undeliveredToast =
                    toastNotificationsManager1.GetNotificationByID(e.NotificationID);
                XtraMessageBox.Show(undeliveredToast.Body, undeliveredToast.Header);
            }
        }

        Should you have any questions about Toast Notifications or you encounter issues with implementation, please post comments below. We’ll be happy to follow up.

        Blog Post: XAF - Blazor Demo Update with New Themes, Editors and Other Enhancements

        $
        0
        0

        After the release of DevExpress Blazor UI Components v19.2.3, we updated our XAF Blazor demo, addressed a few issues and implemented some new capabilities. As always, we look forward to your comments and questions. 

        • Theme Selector with 20+ Bootstrap themes: At this stage, we’ve tested the default Office White theme (minor issues are expected for other themes).

        • Optimistic Concurrency Control: Includes the ability to merge and discard changes.
        • 'Edit' button for aggregated objects and a Clear button for nullable editors.
        • Partial data loading for root List Views (like Server Mode).
        • Page Size selector in List Views.
        • List View records now open via a single click instead of the in-place 'Open' button.
        • Previous known issues were resolved:
          1. The Filter by Text command is now case-insensitive;
          2. List View rows can be grouped by reference properties;
          3. New objects are immediately added to List Views.

        What's Next?

        We are presently working on the following new features:

        • Simple Form-based authentication with a login and password, role-based authorization and basic user/role management with access rights created in code (no specialized permission editors in the UI).
        • A "compact" toggle for all themes in the Theme Selector (many customers wanted more compact themes for the Web). We will also polish remaining themes for XAF layouts by v20.1.

        For more information on what we have planned for XAF Blazor, please refer to the eXpressApp Framework - 2020 Roadmap.

        Blog Post: Week 2 of the Blazor Roadshow with Carl Franklin and DevExpress!

        $
        0
        0

        After a successful week 1 of the Blazor Roadshow, Carl, John, and Jeff are motoring to Raleigh, NC to start off week 2. Tonight, Carl will be presenting in Raleigh/Durham, Tuesday in Atlanta, then Charlotte, then Louisville, after which they take a week’s break before hitting the West Coast, starting March 2.

        Blazormobile with Carl, John, and Jeff

        To remind you, Carl will be presenting above all practical information about using Blazor in your web applications. Best practices, authentication, consuming generic components, how to call JavaScript, server vs client: the topics he’ll discuss and illustrate in code are almost endless. If you are in any of these four cities, my advice is to register ASAP, you will learn a great deal. To register and for details on where/how to attend, please visit the Roadshow website. Seating is limited and is going fast, so make sure to reserve your seat today.


        Blog Post: Dashboard for Blazor - How to use Web Dashboard within your Blazor Apps

        $
        0
        0

        We now offer a way to use DevExpress Web Dashboard within your Blazor apps. 

        In this post I'll show you how to integrate the HTML JavaScript Dashboard into your Blazor applications. I'll focus on integration details and create a sample dashboard application as well.

        Prerequisites

        Here’s what you’ll need to use our HTML JavaScript Dashboard with the Blazor framework:

        Source Code

        You can find the source code of the sample below on GitHub.

        How to Add Dashboard Control to Blazor

        To get started, you must first create a new Blazor application using the Blazor WebAssembly App template and enable the ASP.NET Core hosted check box (or run dotnet new blazorwasm –hosted command). If this template was not installed, please review the following document: Get started with ASP.NET Core Blazor.

        This solution uses the ASP.NET Core backend (server-side Blazor) to process requests from the HTML JS Dashboard. The client side defines the UI for this component and the logic needed to respond to UI updates.


        Configure the Server Project

        1. Install the DevExpress.AspNetCore.Dashboard NuGet package. You can find a comprehensive installation guide in our documentation: Install DevExpress Controls Using NuGet Packages.
        2. Create the App_Data/Dashboards folder to store dashboards.
        3. Install the Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet package to send the model to the client in JSON format.
        4. Open the Startup.cs file to register and adjust DashboardConfigurator:
          using DevExpress.AspNetCore;
          using DevExpress.DashboardAspNetCore;
          using DevExpress.DashboardCommon;
          using DevExpress.DashboardWeb;
          using DevExpress.DataAccess.Json;
          // ...
          public void ConfigureServices(IServiceCollection services) {
          	services.AddResponseCompression(opts => {
          		opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
          			new[] { "application/octet-stream" });
          	});
          	services.AddDevExpressControls();
          	services.AddMvc()
          	.AddDefaultDashboardController(configurator => {
          		// Register Dashboard Storage
          		configurator.SetDashboardStorage(new DashboardFileStorage(FileProvider.GetFileInfo("App_Data/Dashboards").PhysicalPath));
          		// Create a sample JSON data source
          		DataSourceInMemoryStorage dataSourceStorage = new DataSourceInMemoryStorage();
          		DashboardJsonDataSource jsonDataSourceUrl = new DashboardJsonDataSource("JSON Data Source (URL)");
          		jsonDataSourceUrl.JsonSource = new UriJsonSource(new Uri("https://raw.githubusercontent.com/DevExpress-Examples/DataSources/master/JSON/customers.json"));
          		jsonDataSourceUrl.RootElement = "Customers";
          		jsonDataSourceUrl.Fill();
          		dataSourceStorage.RegisterDataSource("jsonDataSourceUrl", jsonDataSourceUrl.SaveToXml());
          		configurator.SetDataSourceStorage(dataSourceStorage);
          	});
          }
          
          public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
          	// ...
          	app.UseStaticFiles();
          	app.UseClientSideBlazorFiles<Client.Startup>();
          	app.UseDevExpressControls();
          	app.UseRouting();
          
          	app.UseEndpoints(endpoints => {
          		EndpointRouteBuilderExtension.MapDashboardRoute(endpoints, "api/dashboard");
          		endpoints.MapDefaultControllerRoute();
          		endpoints.MapFallbackToClientSideBlazor<Client.Startup>("index.html");
          	});
          }

        Configure the Client Project
        1. Add the package.json configuration file and list the following npm packages required by our Dashboard component: 

          {
          "dependencies": {
              // ...
              "devexpress-dashboard": "~19.2.5"
              "@devexpress/analytics-core": "~19.2.5",
              "devextreme": "~19.2.5",
          },
          // ...
          }
        2. Run the npm install command to install these packages.

        3. Create the Dashboard.razor file and add the code below to render the Web Dashboard:

          @page "/dashboard"
          @inject IJSRuntime JSRuntime
          @implements IDisposable
          
          
              <div id="web-dashboard" style="width:100%; height: 600px">
              </div>
          
          @code {
              protected override void OnAfterRender(bool firstRender) {
                  JSRuntime.InvokeAsync<object>("JsFunctions.InitWebDashboard");
              }
          
              public void Dispose() {
                  JSRuntime.InvokeAsync<string>("JsFunctions.DisposeWebDashboard");
              }
          }

          You should use the OnAfterRender lifecycle method for the dashboard component for initialization and the Dispose method to release unused memory.

        4. Add the index.js file and implement the logic to initialize and dispose the components: 

          window.JsFunctions = {
              InitWebDashboard: function () {
                  DevExpress.Dashboard.ResourceManager.embedBundledResources();
                  this.dashboardControl = new DevExpress.Dashboard.DashboardControl(document.getElementById("web-dashboard"), {
                      endpoint: "/api/dashboard"
                  });
                  this.dashboardControl.render();
              },
              DisposeWebDashboard: function () {
                  this.dashboardControl.dispose();
              }
          };
        5. Install the BuildBundlerMinifier NuGet package. Create a bundleconfig.json file to bundle scripts and styles required for Web Dashboard: 

          [
              {
                  "outputFileName": "wwwroot/site/styles.css",
                  "inputFiles": [
                      "node_modules/devextreme/dist/css/dx.common.css",
                      "node_modules/devextreme/dist/css/dx.light.css",
                      "node_modules/@devexpress/analytics-core/dist/css/dx-analytics.common.css",
                      "node_modules/@devexpress/analytics-core/dist/css/dx-analytics.light.css",
                      "node_modules/@devexpress/analytics-core/dist/css/dx-querybuilder.css",
                      "node_modules/devexpress-dashboard/dist/css/dx-dashboard.light.min.css"
                  ],
                  "minify": {
                      "enabled": false,
                      "adjustRelativePaths": false
                  }
              },
              {
                  "outputFileName": "wwwroot/site/bundle.js",
                  "inputFiles": [
                      "./index.js",
                      "node_modules/jquery/dist/jquery.js",
                      "node_modules/jquery-ui-dist/jquery-ui.js",
                      "node_modules/knockout/build/output/knockout-latest.js",
                      "node_modules/ace-builds/src-min-noconflict/ace.js",
                      "node_modules/ace-builds/src-min-noconflict/ext-language_tools.js",
                      "node_modules/ace-builds/src-min-noconflict/theme-dreamweaver.js",
                      "node_modules/ace-builds/src-min-noconflict/theme-ambiance.js",
                      "node_modules/devextreme/dist/js/dx.all.js",
                      "node_modules/@devexpress/analytics-core/dist/js/dx-analytics-core.min.js",
                      "node_modules/@devexpress/analytics-core/dist/js/dx-querybuilder.min.js",
                      "node_modules/devexpress-dashboard/dist/js/dx-dashboard.min.js"
                  ],
                  "minify": {
                      "enabled": false
                  },
                  "sourceMap": false
              }
          ]
        6. Register the bundled resources in the index.html file:

          <!DOCTYPE html>
          <html>
          
          <head>
              <meta charset="utf-8" />
              <meta name="viewport" content="width=device-width" />
              <title>WebDashboardBlazor</title>
              <base href="/" />
              <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
              <link href="css/site.css" rel="stylesheet" />
              <link href="site/styles.css" rel="stylesheet" />
          </head>
          
          <body>
              <app>Loading...</app>
          
              <div id="blazor-error-ui">
                  An unhandled error has occurred.
                  <a href="" class="reload">Reload</a>
                  <a class="dismiss">🗙</a>
              </div>
              <script src="_framework/blazor.webassembly.js"></script>
              <script src="site/bundle.js"></script>
          </body>
          
          </html>
        7. Modify the NavMenu.razor file to add the Dashboard item to the menu:

          <div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
              <ul class="nav flex-column">
                  <li class="nav-item px-3">
                      <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                          <span class="oi oi-home" aria-hidden="true"></span> Home
                      </NavLink>
                  </li>
                  <li class="nav-item px-3">
                      <NavLink class="nav-link" href="dashboard">
                          <span class="oi oi-list-rich" aria-hidden="true"></span> Web Dashboard
                      </NavLink>
                  </li>
              </ul>
          </div>


        Run and View Dashboard

        Run the solution and view our sample in your browser:


        Please test this example and share your thoughts in the survey at the end of this post.


        Your Feedback Counts

        As always, we welcome your feedback. Please take a moment to answer the following survey question so we can better understand your requirements regarding Web Dashboard in Blazor.


        Blog Post: DevExpress at Front End Developer Love in Amsterdam

        $
        0
        0

        This week, Mehul, Alex and I will be at the Front End Developer Love Conference in Amsterdam.

        This conference is packed with everything you need to know about React, Vue.js and Angular. There is an incredible speaker line up with Evan You - creator of Vue.js, Sarah Drasner and others. I will do a session about Blazor WASM as well.

        We'll have daily raffles at the booth and we've brought `I'd rather be coding` T-Shirts for all of you.

        Make sure to visit our booth and find out everything you need to know about DevExtreme and our other products.



        Blog Post: Web Reporting - Usability Enhancements (v19.2)

        $
        0
        0

        In this post, I’ll highlight a number of usability enhancements introduced in our most recent release (v19.2).

        Updated Project Templates

        Our Report Template Gallery allows you to quickly create a custom web app with both a report viewer and report designer. In v19.2, we extended these project templates to help you leverage new Web Report Designer features. Use the following settings in the Project Wizard to add the appropriate extensions to your application.

        Template Gallery - Reporting Web Application

        • Add Sample JSON Data Connection Storage. Select this option to register a default implementation of the IDataSourceWizardJsonConnectionStorage interface. Once implemented, this interface allows you to use new JSON Data Sources within the Web Report Designer.
        • Add Sample Data Object. This option registers the default implementation of the IObjectDataSourceWizardTypeProvider interface. This interface provides the list of data object types to display within the Report Wizard/Data Source Wizard and allows you to bind reports to Object Data Sources.
        • Enable Rich Text Editor. This option enables our new in-line Rich Text Editor for the Web Report Designer’s Rich Text control. Note that this editor requires the devexpress-richedit NPM package.

        Refer to the Create an ASP.NET Core Application with a Report Designer help topic to learn more about the other options.

        Report Designer - Search in Lists

        You can now locate items using our incremental search panel. The incremental search panel is included in the following UI elements:

        v19.1 and Earlierv19.2
        Field List - Search PanelField List - v19.1 Look and Feel

        Report Designer - Rename Custom Queries

        The Data Source Wizard now allows you to input a custom name for a SQL query:

        Web Report Designer - How to Define a Query Name

        We also reduced the number of steps required to modify a query name. You no longer need to open the Query Builder to change a query name. We updated the Edit Query dialog and gave you the ability to edit query names and search through your stored procedures list:

        Web Report Designer - How to Change a Query Name

        Document Viewer - Custom Zoom Factor

        You now have the ability to specify a custom zoom factor for documents displayed within the Document Viewer (you can enter a custom zoom factor as needed).

        Document Viewer - How to Change Zoom Factor

        Document Viewer – Progress Bar Position

        Our Web Document Viewer displays a document generation progress bar in floating mode. When a user scrolls the viewer, the progress bar is always shown at the bottom so that users can see it and know the status of the document generation progress:

        Document Viewer - Document Generation Progress Bar

        You can also use the SettingsProgressBar.Position property to define progress bar position.

        Your Feedback Matters

        Since feedback drives our development efforts, we’d love to hear your thoughts regarding the Actions section of our Designer’s Properties Panel:

        Web Report Designer - Actions Panel

        As you may already know, actions allow users to:

        • Add a report band.
        • Add/remove a row and/or table column.
        • Align a report control to the designer’s grid or center it vertically and/or horizontally within a parent container.
        • Send an overlapped control to back or bring it to the front.

        This control-specific and selection-driven section mimics ribbon contextual tabs and context menu entries you can find in our desktop Report Designer components:

        Desktop Report Designer - Ribbon

        Our 2020 roadmap survey told us that almost 60% of our users do not want DevExpress to replace the Actions panel with the Compact Ribbon Toolbar. To help us determine the best course of action, please complete this short survey regarding the Actions panel:

        Blog Post: DevExpress at the BASTA conference in Frankfurt, Germany

        $
        0
        0

        This week, the BASTA Conference is taking place in Frankfurt. John, Alex C, Alex T, Oliver and I will be present to show and tell you everything concerning Blazor as well as our other products.

        I will have a session about automated Web UI Testing with our open source TestCafe solutions.  Oliver will do a workshop and have several sessions about different topics.

        We will do daily raffles with cool prizes and we'll be handing out swag to everybody who comes by.

        If you're at BASTA, make sure to come by!

        Blog Post: ASP.NET WebForms, MVC and Core - Tips & Tricks (January 2020)

        $
        0
        0

        We’ve compiled a short list of new help topics, code examples and interesting support tickets that may be of interest to those of you using our ASP.NET Subscription. As always, feel free to share your favorite support tickets with the DevExpress developer community in the comments section below.

        New Examples

        We published several new examples onDevExpress GitHub. Please let us know if you have any questions or encounter any issues.

        Rich Edit for Angular

        Diagram for Web Forms

        File Management for ASP.NET Core

        Interesting Technical Support Tickets

        Common (ASP.NET MVC and Web Forms)

        ASP.NET Web Forms 

        ASP.NET Core

        ASP.NET MVC

        Documentation Topics

        The following article describes how you can add our ASP.NET Core RichEdit control to an Angular application.

        Add RichEdit to an Angular Application

        We also created a set of topics for the Gantt Control’s UI elements and its API members (how to manage appearance and functionality):

        ASP.NET WebForms

        TasksDependenciesResources

        ASP.NET MVC

        TasksDependenciesResources

        We also added code examples to our documentation to illustrate how to use header and cell bands in MVC GridView.

        Feedback

        Feel free to share your thoughts on these items or anything else that may be on your mind. As always, we thank you for your continued business.

        Blog Post: XAF - 10 New Help Articles on Lightweight Unit Tests and Azure DevOps Integration with EasyTest

        $
        0
        0

        I hope you’ll agree with me that this topic is extremely important to XAF's primary target audience - development teams creating complex enterprise apps.

        To help reduce the time needed to write unit and functional tests with XAF, we have published 10+ NEW articles

        I also want to point you to community content on this subject from Manuel Grundner (DevExpress MVP):

        His personal blog contains other posts that address XAF best practices: https://blog.delegate.at/tags/XAF/.

        Please Help Us Decide on Future Enhancements

        We published these learning materials after comments to the recent roadmap survey and Support Center questions on unit & functional testing - thank you for your help! Additional enhancements are expected and will also be driven by user feedback.  

        For unit testing, we are considering to add more learning materials and release all required assemblies with helper/mock classes (like TestDBTestTestDetailViewFactory, etc.). For functional testing, we are considering to improve our cross-platform EasyTest engine with new commands and features. For instance, you will be able to write Blazor functional tests for Chrome or FireFox web browsers in C# or VB.NET (examples).

        Please let us know what you think of these new learning materials and planned enhancements in this regard. 

        Blog Post: Blazor Components - New Upload, Chart Rotation, and Month-Year Navigation in Calendar (v19.2.4)

        $
        0
        0

        This post describes our new Upload component and enhancements made to the DevExpress UI for Blazor in our most recent release (v19.2.4). As you may know, we've released multiple updates over the last couple of months. You can read our last Blazor UI-related announcement here.

        .NET Core 3.1.2 Support

        Our Blazor components now support .NET Core 3.1.2 update.

        New Blazor File Upload Component

        This release includes a new Blazor Upload control. The Upload control allows your end users to upload files to your server via AJAX requests.

        DevExpress Blazor Upload Component

        Blazor File Upload Configuration

        To configure the Upload control, the following client and server side properties must be set/specified:

        Client-Side

        • Specify the Name property. This value is required to access uploaded files.
        • Set the UploadUrl property. Must be set to the server-side controller action that handles the upload requests.
        <DxUpload Name="myFile"
                UploadUrl="https://[doamin name]/api/Upload/UploadFile/">
            </DxUpload>
        

        Server-Side

        Use the following code to create a controller and action used to check the accepted file before saving it to the target location:

            [Route("api/[controller]")]
            public class UploadController : ControllerBase {
                [Route("UploadFile")]
                // "myFile" is the value of the Upload's "Name" property.
                public ActionResult UploadFile(IFormFile myFile) {
                   // Process the uploaded file here.
                }
            }
        
        To learn more, please review the Blazor Upload control's documentation.

        Chunk Upload for Large Files

        To help you upload large files, our Upload component provides the new chunk mode. In this mode, the Upload component splits large files into small packets and sends them to the server in multiple requests.

        To enable, set the ChunkSize property to the desired upload packet size. Therefore, the maximum size of each chunk will be split into before uploading. For example, the following code will upload files in one-megabyte increments:

        <DxUpload ... ChunkSize="1000000">
        
            </DxUpload>
        
        You'll need to configure your controller to accept file chunks, merge them to a single file, and save it. Please take a look at [this help topic](https://docs.devexpress.com/Blazor/DevExpress.Blazor.DxUpload#chunk-upload-for-large-files) for more information.

        Drag and Drop

        Our Blazor Upload control supports drag and drop operations. To activate drag and drop, set the external zones where end users can drop files.

        Multiple File Upload

        End users can upload multiple files. To activate multi-file upload, set the AllowMultiFileUpload property to true.

        Instant Upload and Upload on a Button Click

        The Upload component allows you to choose between two modes via the UploadMode property:

        • Instant (default) - to upload files immediately after a user selects or drops a file.
        • OnButtonClick - to only upload files once a user clicks the upload button.

        DevExpress Blazor Upload On Button Click

        File Validation

        You can also validate files on the client before sending them to the server. Use the MaxFileSize property to limit the minimum and maximum file size and the AllowedFileExtensions property to restrict which file types can be uploaded:

        <DxUpload MaxFileSize="4000000"
                 AllowedFileExtensions="@(new List<string> { ".jpg", ".jpeg", ".gif", ".png" })" ... >
            </DxUpload>
        

        DevExpress Blazor Upload Validation

        API Changes

        We've made some changes to the API since our last release (v19.2.4-Preview). To learn more, please review our API change log.

        Charts Rotation

        Our Blazor Chart component now ships with a Rotated property. Set the property to true to swap axes and display the argument (X) axis vertically and the value (Y) axis horizontally.

        DevExpress Blazor Chart Rotation

        Calendar Navigation Enhancements

        With this release, end users can quickly find any date in our Blazor Calendar. The Calendar now supports navigation between months, years, decades, and centuries.

        DevExpress Blazor Calendar Navigation

        Updated XAF's Blazor UI & Example with Security System APIs

        For our XAF customers: We've updated our online XAF Blazor demo based on release versions of DevExpress Blazor components.

        Even if you do not plan to use XAF's UI, you may find this new non-XAF Blazor Server demo and tutorial helpful. It demonstrates how to use DevExpress Blazor components with XAF's non-visual APIs for user authentication and group authorization. For more information on our business application framework for .NET developers, please follow the XAF Team blog.

        Blog Post: Office File API & Office-Inspired Desktop UI Controls – Tips & Tricks (January-February 2020)

        $
        0
        0

        As always, we want to thank you for choosing our products and for placing your trust in DevExpress. We hope the following tips & tricks will be of value for those using our WinForms & WPF Office-inspired controls and Office File API (XLS, DOC, PDF).

        Tips & Tricks

        Enhancements

        Documentation Updates

        If you have a support ticket you’d like to share with the DevExpress developer community, feel free to post a comment with a link below.

        Blog Post: WPF - Tips & Tricks (February 2020)

        $
        0
        0

        We’ve compiled a series of WPF-related support tickets we hope you’ll find useful as you explore and use our WPF product line. Should you have any questions or issues related to any of these tickets, feel free to submit a comment below or respond directly to the ticket within Support Center.

        If you’ve come across a valuable WPF-related support ticket, feel free to share a link with members of the DevExpress WPF community in the comments section below.

        WPF Data Grid

        WPF Diagram Control

        Other WPF Products


        Blog Post: Frontend Developer Love impressions

        $
        0
        0

        2 weeks back, Mehul, Alexander and I put up our booth at the Frond End Developer Love conference in Amsterdam.

        This conference was full about JavaScript/TypeScript except for one session - mine about Blazor WASM.

        The first day was a mixture of Angular / Vue / React developers where day 2 and 3 where exclusively Vue.js related.

        We met a few existing customers but most people we spoke to had never heard of us. This gave us the opportunity to give lots of demos on our DevExtreme components which raised quite some interest.

        We held well attended raffles every day with nice prizes to be won. The last day we where able to perform the raffle on stage.

        To get an impression about Front End Developer Love, check the images below:

        Blog Post: Week 3 of the Blazor Roadshow is on the West Coast

        $
        0
        0

        Following a quick week off to recuperate after the first successful fortnight of Carl Franklin’s Blazor Roadshow, Carl, John, and Jeff are traveling up the California and Oregon coastline this week. Tonight it’s San Diego, Tuesday is Los Angeles, and Thursday is Portland. Unfortunately, we couldn’t reserve a spot for San Francisco/Mountain View so the Wednesday stop has had to be canceled.

        A quick reminder: Carl will be presenting lots of practical information about using Blazor in your web applications. Best practices, authentication, consuming generic components, how to call JavaScript, server vs client: the topics he’ll discuss and illustrate in code are almost endless. If you are in any of these three cities – or indeed any of the nine cities over the following three weeks – my advice is to register ASAP, you will learn a great deal. To register and for details on where/how to attend, please visit the Roadshow website. Seating is limited and is going fast, so please make sure to reserve your seat today.

        Blog Post: Blazor Components - Tips & Tricks (February 2020) 

        $
        0
        0

        We thank you for your ongoing feedback and for choosing DevExpress Blazor UI controls. In this post, I’ll share links to a few interesting support tickets, examples, and documentation articles. Should you have any suggestions, please feel free to leave a comment below. 

        Interesting Support Tickets 

         Online Examples  

        Documentation Updates 

        Getting Started

        To help you get started with our Blazor components, we updated the following Blazor topics to include recent changes to the framework:

        Please note that our documentation now refers to Blazor's hosting models using official names: Blazor WebAssembly and Blazor Server

        New Common Topics

        New Components

        Data Grid

        Scheduler Events  for CRUD Operations

        More Updates 

         

        Blog Post: Reporting - Tips & Tricks (January - February 2020)

        $
        0
        0

        We’ve collected interesting support tickets you submitted for the last two months. Thank you for all your feedback. Hopefully you’ll find all this information of value as you integrate our reporting platform in your next desktop or web project.

        Interesting Tickets

        Reporting – Multiple Supported Platforms (WinForms, WPF, ASP.NET, .NET Core)

        WinForms Reporting

        WPF Reporting

        Web Reporting

        Report & Dashboard Server

        Documentation Updates

        Your Feedback Counts

        We’re now collecting our customers’ feedback regarding the Web Report Designer Actions Panel to determine whether we need to enhance this user interface element. Please submit your feedback to the short survey in our previous blog post if you are using our Web Report Designer: Web Report Designer - Actions Panel Survey.

        Blog Post: WinForms - Early Access Preview (v20.1)

        $
        0
        0

        It’s been over a month since we published our official 2020 WinForms Roadmap. Despite the short time frame, we've managed to implement quite a few features that we hope you’ll find valuable. In this post, I’ll summarize what we expect to include in our WinForms Early Access Preview (v20.1).

        Please remember that pre-release builds are designed to collect feedback. If you find any of the features in this post promising (and if you own an active Universal or DXperience Subscription), please download the build by pointing your browser to the Download Manager.

        Your Feedback Matters

        We realize beta-testing is a time consuming process and we are eternally grateful to those who invest time with our preview 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? Please post your thoughts in the comment section below or create a Support Center ticket. We will happily follow-up and do what we can to extend the capabilities of our new products/features.

        If you currently own a WinForms Subscription and are considering an upgrade to DevExpress Universal or DXperience, email us at clientservices@devexpress.com for preferential upgrade pricing.

        WinForms Data Grid

        Summary by Selection

        Grid Summary Items now include the Mode property. Use it to calculate summaries against currently selected rows.

        You can choose between three operational modes:

        • All rows - summaries are calculated against all rows;
        • Selection - summaries are calculated only against selected rows;
        • Mixed - acts as "All rows" when only one row is selected, switches to "Selection" mode when a user selects two or more rows.

        At runtime, users can right-click a summary item to specify the desired selection mode.

        New summary calculation modes work for both data and group rows. In the figure below, two group rows are selected. Summaries for the "Unit Price" and "Quantity" columns calculate their values only for records within these groups.

        Demo   Documentation

        WinForms Data Grid Kanban Board Enhancements

        This release extends the capabilities of our Data Grid's TileView Kanban mode with the following features:

        • Auto-height - Tiles can now span different heights. You can enable auto-height mode for tile template rows that display lengthy text strings or large images. To limit the maximum number of text lines, you can use the new MaxLineCount option.
        • Each Kanban group can display a button at the bottom. You can control text and visibility of this button for individual groups. Handle the GroupFooterButtonClick event to execute actions when the button is clicked.
        • The Kanban board allows you to manually create groups, and control group visibility/order. This feature allows you to retain empty groups after a user drags all their tiles away.
        • Group headers now accept custom buttons. These buttons can be either constantly visible, or appear only when a user hovers over headers.
        • You can now highlight Kanban group backgrounds with custom colors.
        • Kanban Group headers now support HTML Formatting.

        Launch our updated Tile View Kanban Board demo to explore these features in greater detail.

        Demo   Documentation (AutoHeight)   Documentation (Groups)

        WinForms Gantt Control

        Runtime Editing and Task Dependencies

        Our WinForms Gantt Control now supports interactive editing. Users can move a task to a new time slot, resize it, or change dependency type (Start-To-Start, Finish-To-Start) with a pointing device in the task chart. All changes are automatically reflected in the task list.

        Demo   Documentation

        AutoScheduling

        When a user edits a task at runtime, the control automatically re-calculates the entire process and modifies start and end dates of other tasks.

        Demo   Documentation

        WinForms Tree List - New Item Row

        Our WinForms TreeList control can now display an empty row. This empty row can be used to quickly add new records to the underlying data set.

        The TreeList’s New Item Row replicates all the features we currently ship in our Data Grid.

        • Set the OptionsView.NewItemRowPosition property to choose New Item Row position: top, bottom, or none (hidden).
        • The TreeList.InitNewRow event allows you to automatically set initial cell values for new rows.
        • Localization services allow you to modify the default "Click here to add a new row" text. text string. If you do not need to localize your app, modify the TreeList.NewItemRowText property instead.

        When the New Item Row is enabled, the Tree List displays "Add Node" and "Add Child Node" options when a user right-clicks a node.

        Enable the OptionsMenu.ShowAddNodeItems setting to show these menu items regardless of the New Item Row visibility.

        Demo   Documentation

        WinForms Pivot Grid - Pinned (Fixed) Columns

        You can now pin Pivot Grid field values so that they remain visible when a user scrolls through control data.

        To pin a value in code, add a new FixedFieldValue object to the FixedColumnFieldValues collection. The Conditions specifies the field values to be pinned. For instance, the code below pins "fieldQuantity" field values that belong to the "February 2015" interval.

        var info = new FixedFieldValue(fieldQuantity);
        info.Conditions.Add(
        	new FixedFieldValueCondition(fieldYear, new DateTime(2015, 2, 1)));
        pivotGridControl1.FixedColumnFieldValues.Add(info);

        If you specify no conditions, the "Grand Total" column is pinned.

        pivotGridControl1.FixedColumnFieldValues.Add(new FixedFieldValue(fieldQuantity));

        Demo   Documentation

        WinForms Diagram Control

        Text Tool

        Our new Text Tool allows you and your users to add text labels to your diagram.

        DirectX Support

        The diagram rendering engine now supports DirectX hardware acceleration. This improves the performance for diagrams with a large amount of items and diagrams that contain complex SVG shapes.

        Documentation

        DataTable Support

        We have updated our Data Binding and Org Chart controllers to support DataTable and DataSet sources.

        Property Panel Localization API

        We have extended the DevExpress.Diagram.Core.Localization.DiagramControlStringId class so you can localize property names in the Property Panel.

        WinForms Stack and Table Panel Enhancements

        This release incorporates enhancements to StackPanel and TablePanel containters.

        StackPanel Demo   TablePanel Demo

        Auto-Size Functionality

        Both panels can now automatically shrink and expand to fit all nested controls (use the control's AutoSize and AutoSizeMode). Note that individual rows and columns also support AutoSize mode.

        Documentation (StackPanel)   Documentation (TablePanel)

        Right-to-left Support

        The panels now reverse the layout of nested controls when RTL mode is detected.

        Documentation

        Automatic Tab Order

        The new AutoTabOrder property allows you to automate tab order for controls hosted within panels.

        Documentation

        Row and Column Visibility Settings

        Columns and Rows inside a Table Panel support the Visible property.

        New Label Alignment Mode

        The new LabelVertAlignment property allows you to vertically align labels relative to controls displayed in adjacent cells.

        Documentation

        HiDPI Support

        Both panels now support Per-Monitor v2 DPI Awareness mode.

        WinForms SvgImageBox - DirectX Rendering

        Our recently released SvgImageBox control can now use DirectX hardware accelleration to render vector images. This improves control performance when you need to draw a complex image with a large amount of vector elements.

        New WinForms Splash Screens

        This release introduces two new splash screens:

        • Fluent Splash Screen - a Windows 10-inspired splash screen that features an Acrylic material effect (a partially transparent texture)
        • Skin Splash Screen - a Splash Screen that auto-adjusts its appearance based on the current skin

        To display these splash screens, call the static SplashScreenManager.ShowFluentSplashScreen and SplashScreenManager.ShowSkinSplashScreen methods.

        Additionally, we have revamped the appearance of standard Splash Screen.

        Demo

        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.
        Viewing all 3390 articles
        Browse latest View live