Quantcast
Channel: Developer Express Inc.
Viewing all 2399 articles
Browse latest View live

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.


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.

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.

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.


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.


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.


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:

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!


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.

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. 

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.

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.

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

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:

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.


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 

 

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.

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.

WPF - Early Access Preview (v20.1)

$
0
0

In this post, we'll detail some of the features we expect to ship in our next major release (v20.1) and invite active Universal and DXperience Subscribers to test new functionality (by downloading/installing our Early Access Preview) before we complete our current dev cycle. Should you have any questions or want to share your thoughts with us, please post a comment below.


As always, we thank you for choosing our WPF components and for placing your faith in DevExpress.

.NET Core Support

We've added the following .NET Core designer features in our current release cycle (v20.1)

  • Applying application themes from App.config to all designer previews.
  • Selection of non-visual elements (Data Grid columns, Toolbar & Ribbon items).
  • Basic Smart Tags - displaying links to documentation, selecting the application theme.

WPF Data Grid

Virtual Sources - Data Editing

Infinite and Paged sources now support data editing via Edit Entire Row. End users can press the Update button after entering cell values to post changes to a data source asynchronously.

Demo Link

Documentation

WPF Data Grid and TreeList - Common Features

Automatic Column Best Fit

The Data Grid and TreeList can automatically recalculate optimal column width when you scroll data.

Documentation

WPF Gantt

Resources

You can assign resources to tasks and specify the percentage of time a resource spends on a task.

Demo Link

Documentation

Backward Scheduling

Backward Scheduling allows you to manage projects that have a specific deadline. You can plan backwards - scheduling each task from a deadline to the beginning of the project.

Demo Link

Documentation

WPF Scheduler

Appointment and Time Region Filtering

We have added the ability to dynamically hide appointments and time regions. You can define a filter criteria in XAML or code-behind using our criteria syntax. The FilterAppointment and FilterTimeRegion events allow you to describe custom filtering logic.

You can also bind the Scheduler to the Filter Editor or Filter Elements to incorporate our filtering UI in your next WPF app.

Demo Link

Documentation

WPF Diagram

Text Tool

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

Property Panel Localization API

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

WPF Pivot Grid

Customization Form Search

The Pivot Grid's customization form displays a search box that allows end users to filter the available fields list.

Demo

WPF Accordion

Selection Restriction

You can now restrict selection in the WPF Accordion control. The CanSelectItem event occurs when an end user moves the mouse over an item or selects items with the keyboard. The event handler allows you to prevent selection for specific accordion items.

Documentation

Show Popup on Hover

When the AccordionControl is used in collapsed mode, it displays its items in popup window when an end user clicks an item. To display the popup on mouse hover, set the ShowPopupOnHover property to true.

After an end user moves the mouse outside the popup window, the popup window is hidden with a delay specified using the PopupHideDelay property.

If an end user selects an accordion item within the popup window, the popup window remains open.

Documentation

WPF Ribbon and Toolbars

Appearance Options

With this release (v20.1) you can fully customize Ribbon, Toolbar, and BarItems appearance via the following properties:

  • Background,
  • BorderBrush,
  • BorderThickness,
  • CornerRadius,
  • Foreground,
  • Margin,
  • Padding.

You can also use triggers based on custom conditions, mouse input, and visual states to control a BarItem’s appearance.

Documentation

WPF Ribbon - Backstage View Enhancements

You can now display a glyph for Backstage tab item headers. You can also display tab item headers at top or bottom of the BackstageView.

Demo Link

Documentation

Compact SVG Declaration

You can now specify SVG icons using a compact definition:

<dxb:BarContainerControl> 
    <dxb:MainMenuControl> 
        <!-- The old SVG definition --> 
        <dxb:BarButtonItem Glyph="{dx:SvgImageSource Uri=Images/Notebook1.svg}"/> 
        <!-- The new SVG definition -->         
        <dxb:BarButtonItem Glyph="Images/Notebook2.svg"/> 
    </dxb:MainMenuControl> 
</dxb:BarContainerControl> 

An SVG image source can be bound to Strings, Uris, and Streams. You don’t have to create an IValueConverter to bind an ImageSource with a ViewModel.

WPF Data Editors

WPF DateEdit - Operation Mode Glyphs

With this release (v20.1), our WPF Date Edit’s drop-down button displays different glyphs for different operation modes.

Demo Link

Documentation

WPF TrackBarEdit

Our WPF TrackBar Editor can draw labels alongside ticks and display a tooltip with the current value when a user drags a thumb.

You can fully customize the label content and appearance settings using the following new API:

  • TickItemContainerStyle,
  • TickItemContainerStyleSelector,
  • TickItemTemplate,
  • TickItemTemplateSelector,
  • TickItemStringFormat.

Other Editor Enhancements

  • WPF ListBox Edit, ComboBox Edit, and Lookup Edit now include an ItemsSourceChanged event.
  • End users can triple-click to select the entire text line in our WPF TextEdit.
  • We have improved text selection in editors with masked input.

WPF Themes

New Default Theme

We’ve changed our default theme to Office2019Colorful. Unlike our previous default theme (Office2016White), Office2019Colorful supports palettes, lightweight templates, and standard WPF control customization with the Background, BorderBrush, and BorderThickness properties.

You can use the CompatibilitySettings.LegacyDefaultTheme property to return to a previous default theme.

Your Feedback Matters

As always, we welcome your feedback. Please post your comments below or create a new support ticket if you’ve beta tested our Early Access Preview.

NOTE: 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.

Reporting - Early Access Preview (v20.1)

$
0
0

We are about two months away from the official v20.1 launch – time to update all of you on what we’ve accomplished so far this year…

Before we get into it – a quick reminder: If you are an active Universal or DXperience subscriber and want to test upcoming v20.1 features before our official release, you can download the Early Access Preview build via the DevExpress Download Manager. Please let us know how well the new functionality described herein addresses your business requirements. Your feedback will help us fine-tune our implementation prior to official release.

Multiple Supported Platforms - WinForms, WPF, ASP.NET (MVC, Core)

Report Designer - Report Localization

You can localize a report so that it incorporates design and text variations for different languages and cultures. Localized values are stored in REPX files.

Our Localization Editor was designed to expedite the report translation process:

Localization Editor

To explore this feature in greater detail, please view our online Localization Support in Web Report Designer demo.

For a comprehensive tutorial, please refer to our Localize Reports help topic.

Report Designer - Embed PDF Documents

We added a new XRPdfContent report control to our Report Designer. This control allows you to embed pages from an external PDF file into a report document. PDF content is rendered on separate pages and uses its own page size.

Embedding PDF by using the XRPdfContent control

For more information, please refer to the XRPdfContent Class help topics.

If you have a usage scenario you’d like us to consider for future builds, please answer the following survey question:

Report Designer - Updated New Parameter Dialog

We’ve updated the look and feel of our WinForms Add New Parameter dialog. Its user interface is now the same across all supported platforms:

WinForms Report Designer - New Parameter Dialog

Excel Export – Html-Inspired and RTF Content Support

XRLabel (with the AllowMarkupText property enabled) and XRRichText controls (bound to RTF and/or HTML data) now preserve content formatting when exporting a report to Excel.

For more information, please refer to the Export To XLS and Export To XLSX help topics.

JSON Data Source Parameters - Wizard and Expression Support

We updated the JSON Data Source Wizard. You can now add path, query and header parameters to JSON web service endpoints. We also added support for expressions in JSON parameter values (so you can pass report parameter values to resulting requests).

Please refer to the Bind a Report to JSON Data help topic for a complete tutorial.

Data Source Wizard - JSON Data Source Parameters Expression Binding

To explore this feature in greater detail, please view our online JSON Data Source Parameter Bindings demo.

New Features Tour in our Web Report Designer

We published Reports Localization and JSON Data Source - Parameter Bindings online demos to better demonstrate new features. Here’s a brief preview of the demos:

New Features Tour in JSON Data Source - Parameter Bindings online demo

Localization Support

JSON Data Source - Parameter Bindings

We’d love to get your thoughts on these two demos:

ASP.NET Core Reporting

Pango-based Drawing Engine on Linux / macOS

Thanks to your feedback we discovered that the use of the GDI+ engine produces different results on Windows and Linux/macOS (where libgdiplus is used). In this development cycle we focused on parity in terms of document rendering quality and PDF export regardless of the target platform (be it .NET Core or .NET Framework) or operating system used to host Reporting apps.

We have a few open issues with the libgdiplus GitHub repository. While we wait for solutions, we’ve explored Cairo and Pango (libraries that are well-known within the open-source and Linux user community). The following table summarizes our preliminary results (a print preview of our Vehicle Inspection report demo in Linux environment):

  • Text Cut Off

v19.2 (Ubuntu Linux, libgdiplus)v20.1 (Ubuntu Linux, Pango+Cairo)
Export to ImageExport to Image v19.2 by using libgdiplusExport to Image v20.1 by using Pango+Cairo
Export to PDFExport to PDF v19.2 by using libgdiplusExport to PDF v20.1 by using Pango+Cairo
  • National Characters

v19.2 (Ubuntu Linux, libgdiplus)v20.1 (Ubuntu Linux, Pango+Cairo)
Export to ImageExport to Image v19.2 by using libgdiplusExport to Image v20.1 by using Pango+Cairo
Export to PDFExport to PDF v19.2 by using libgdiplusExport to PDF v20.1 by using Pango+Cairo
  • Bold Text

v19.2 (Ubuntu Linux, libgdiplus)v20.1 (Ubuntu Linux, Pango+Cairo)
Export to ImageExport to Image v19.2 by using libgdiplusExport to Image v20.1 by using Pango+Cairo
Export to PDFExport to PDF v19.2 by using libgdiplusExport to PDF v20.1 by using Pango+Cairo
  • Text Alignment

v19.2 (Ubuntu Linux, libgdiplus)v20.1 (Ubuntu Linux, Pango+Cairo)
Export to ImageExport to Image v19.2 by using libgdiplusExport To Image v20.1 by using Pango+Cairo
Export to PDFExport to PDF v19.2 by using libgdiplusExport To PDF v20.1 by using Pango+Cairo

We encourage you to review the following Knowledge Base article if you’d like to use this new drawing engine within your app: ASP.NET Core Reporting - How to enable Cairo and Pango-based drawing engine.

Microsoft Azure Reporting

Azure Support for .NET Standard

We published our DevExpress.AspNetCore.Reporting.Azure NuGet package - .NET Standard-specific analog of the DevExpress.Web.Reporting.Azure package (allows you to store temporary document data within Azure Storage).

The DevExpress.AspNetCore.Reporting.Azure package can also be obtained via the DevExpress Reporting installer.

PDF Export - Various Enhancements for Azure Web Apps

We’ve enhanced our PDF export engine for Azure Web App hosting. It now includes the following functionality:

Enable the static AzureCompatibility.Enable property at application startup for testing purposes.

Your Feedback Counts

As we mentioned earlier, your feedback matters. If you own an active Universal or DXperience Subscription, please download our Early Access Preview and share your experiences with us.

NOTE: 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 2399 articles
Browse latest View live