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

Markdown-based Reporting - Your Vote Counts

$
0
0

You know Markdown? Of course you do, everybody does these days. If you’re not familiar with Markdown, here’s the original description from 2004. In a nutshell, it’s a simple text-based format that can be translated easily to HTML or other output formats. It has become ubiquitous and there are many extensions that utilize the basic syntax for advanced purposes. I’m writing this blog post in Markdown right now!

Recently some of us had an idea. We were looking at a document with a Markdown table, similar to this:

# Orders

| Product   |   Unit Price |   Quantity |   Discount |   Subtotal |
| :-------- | -----------: | ---------: | ---------: | ---------: |
| `Product` | `Unit Price` | `Quantity` | `Discount` | `SubTotal` |

The following came to mind: What if this table could be used as a report definition?

We followed up on this idea and worked out some of the details. Here is a summary, including some answers to the obvious questions you might have.

Simplicity as a goal

Our idea is to use Markdown as a simple syntax to define simple reports. These reports will likely never support every formatting option of the full Designer, or every possible layout idea. However, there are several powerful advantages:

  • Reports can be created and edited anywhere. The definition format is text-based, so you can use any editor on any platform. A simple text editing widget will do, perhaps including basic highlighting features. That widget can be part of a web application, a mobile application, an Admin frontend. Of course TextMate or Sublime on the Mac work equally well, and so does vi in your Linux-based cloud environment. The format is readable and suitable for manual editing.

  • Since the report definition format is a document, it can be used very easily for flowing text with data elements – much like a mail merging document, but with advanced features. Arguably such reports are represented better by a document format than by a banded report structure.

  • You can easily automate the process of creating report definitions. This can be done in any language, on any platform, as long as you can output some basic text to a file or stream it over the network. The format is compact, so it transfers through service interfaces quickly and easily.

  • Since we focus on Markdown, you can utilize existing tools. Of course this applies to editors, but also to automated processing or transformation, for instance using remark or other parts of the unified ecosystem.

Finally, we don’t plan to lock you in - Markdown report definitions can be converted into our standard REPX format. Reports generated from Markdown will be fully compatible with our existing viewer components and our export mechanisms.

How does Markdown work for reports?

Here is an example of a report definition:

\report{data=NWind, table=Orders, paperkind=letter}
|:---|---:|
|# Invoice|![BarCode]{Code128,OrderID}|

|:---|---:|
|`CompanyName`|Order ID: `OrderId`|
|`ContactName`|Order Date: `OrderDate!M/d/yyyy`|
|`ShipAddress`| |
|`ShipCity`| |
|`ShipCountry`| |


\sreport{table=OrdersOrderDetails}
|Pos. |Quantity |Product Name  | Unit Price| Discount| Net Price|
|:--- |:---     |:---          |       ---:|     ---:|      ---:|
|1.   |`Quantity`|`ProductName`|`UnitPrice`|`Discount`|`NetPrice`|
|:~~~ |~~~:|
| |
|Item count: `sumCount(ProductName)`|Grand Total: `SumUnitPrice`|
| |Discount Total: `DiscountTotal`|
| |**Amount Paid: `AmountPaid`**|
\newpage
\pagefooter
|:---|---:|
|`CurrentDate!dddd, MMMM d, yyyy|Page `PageNumber` of `PageCount`|

This definition is meant to generate a report that looks much like the following image, one of our demo reports:

Sample Report

As you can see, we use a table to arrange report elements on the page. The table occupies the whole page width and column widths are calculated automatically based on the widths they occupy in the Markdown definition.

All standard Markdown syntax works as expected in report definitions. For Reporting purposes, we plan to add several additional elements. Here are some examples:

Declarations

SyntaxDescription
\report{data=NWind, table=Orders, paperkind=letter}Declares a report and specifies some properties (data source, table name, paper kind)
\sreport{table=OrdersOrderDetail}Begins a detail report and specifies some properties (table name)
\newpageInserts a page break
\pagefooterDefines a page footer area

Elements

SyntaxDescription
| Pos. | Quantity | Product Name |Defines a table header and column widths. We are considering the use of a “spacer character” for width definitions, since whitespace is not significant in Markdown.
| :--- | :--- | ---: |Separates the table header from the data rows and specifies horizontal alignment. This is a standard Markdown syntax.
1.Used in a data table, this generates an enumeration that spans table rows
`Quantity`A data-bound field
| :~~~ | ~~~: |Declares a table footer with two columns and column alignment
`sumCount(ProductName)`An expression with a summary function

A mail-merging example

Here is an example report with a letter structure:

\report{data=weeklyeval, table=customers, paperkind=letter}

| :--- | :--- |
| `companyname` | Marketplace Inc |
| c/o `contact` | The Place |
| `address1` | Silicon Valley 65738 |
| `address2` | |
| `address3` | |
| `zipcode` | |
| `country` | |

Dear `contact_firstname`,

This is your weekly summary for the timeframe
`weekstart!M/d/yyyy`-`weekend!M/d/yyyy`. These
were your three top customers by total sales:

\sreport{table=topthreecustomers}

| Company Name  |       Orders |  Total Sales |
| :------------ | -----------: | -----------: |
| `companyname` | `ordercount` | `totalsales` |

The following table shows the top three products by total sales:

\sreport{table=topthreeproducts}

| Product Name  |   Count |  Total Sales |
| :------------ | ------: | -----------: |
| `productname` | `count` | `totalsales` |

Thank you very much for your business.

Best regards,

Your team at Marketplace Inc

The result rendered by this definition would look like this:

Mail Merging Report Sample

Where does the data come from?

Of course it is possible to generate Markdown reports from application code where a data layer is already in place – just like reports defined in the REPX format or even in code. However, we also plan to enable data source definitions using configuration files, probably based on YAML. This approach makes it possible to create reports entirely from command line environments, or more generally to implement workflows that don’t involve UI of any kind. Optionally we can allow YAML “front matter” to the Markdown report definition, to combine a report with its data source in one file.

How are reports styled?

A core idea of Markdown is that you don’t think about styles when you write your text. For our Reporting concept, we follow the same approach. Default styles will be provided for all format elements: headers, table structures with headers, footers, odd and even rows, and so on. These styles can be overridden separately, independently of the report definition.

Please Let Us Know Your Thoughts

At this point, the plans described above are just an idea. We need your feedback to decide whether to commit to these plans! What do you think? Please feel free to leave a comment below, open a ticket in Support Center for discussion or contact us at reportingteam@devexpress.com. Additionally, it would be very helpful if you could submit your responses to this short survey:


DevExtreme - Filter Builder - Customization Enhancements (v18.2)

$
0
0

Customization of the DevExtreme Filter Builder has become more flexible with our v18.2 release. Based on customer requests, we added two new options that enable you to restrict the complexity of filters created by users.

Like the vast majority of DevExtreme functionality, the features discussed in this post are available to you on all supported platforms, including Angular, Vue, React, jQuery and ASP.NET MVC and ASP.NET Core.

Criteria Nesting Depth

We introduced the option maxGroupLevel to limit the criteria grouping levels end users can create.

If this value is set to 0 (zero), new criteria can only be added to the root level of the filter. If the value is 1, a single extra level can be added.

Please follow this documentation link for all the details.

Criteria Grouping Operation Restrictions

By default, the Filter Builder supports four criteria group operations: And , Or , Not And and Not Or. You can now configure a subset of these operations to be enabled in the Filter Builder by setting the groupOperations property.

For example, to remove the Not And and Not Or operations, set the property to ['and', 'or'].

Restricting groupOperations

Documentation for this feature is available here.

Try It Now

The Filter Builder Customization Demo shows both new features in action. Alternatively you can install version v18.2 in your project to test things for yourself:

npm install --save devextreme@18.2

Please Tell Us What You Think

Your comments are welcome, as always! Please submit the short survey below, and feel free to add comments to this post or open a Support Center ticket for further discussion.

VCL Controls - 2019 Roadmap

$
0
0

Based on survey results and Support Center feedback, we’ve finalized our 2019 Roadmap. We want to thank you for your continued support and for your insightful comments.

Important Note on Survey Results

The survey's main question was about our commitment to the FMX platform. In the end, 36.6% of respondents chose FMX Grid over additional capabilities for VCL products. On the one hand, we understand that this does not amount to a majority of votes. On the other hand, this result demonstrates that a substantial part of our customer base is interested in FireMonkey. After careful consideration, we decided that we will proceed with FMX Grid development and will implement 6 of the most popular VCL product enhancements listed on our survey. Percentages below are given based on the number of people who chose additional VCL capabilities over FMX Grid.

  • ExpressQuantumGrid - Improved Performance (84.07%)
  • ExpressQuantumGrid, TreeList & Vertical Grid - New Expression Editor and Calculated Columns (74.34%)
  • ExpressQuantumGrid - Entity Model Framework-based View (53.98%)
  • ExpressQuantumGrid & TreeList - Scrollbar Annotations (53.1%)
  • ExpressNavBar - Hamburger View (52.65%)
  • ExpressScheduler - Improved Performance (calculations/drawing) (39.82%)

You'll find all these features in the complete list below, combined with the other enhancements we plan to implement in 2019.

If you have any issues with the roadmap or questions about implementation, feel free to email us at support@devexpress.com - we will be happy to follow up.

Table of Contents

VCL Controls

ExpressQuantumGrid

Excel-inspired Filtering (v19.1)

Excel inspired numeric range filterExcel inspired date filterExcel inspired text filter

Scrollbar Annotations (v19.2)

Scrollbar Annotations

New Expression Editor and Calculated Columns (v19.2)

Expression Editor for Unbound Columns

Entity Mapping Framework-based View (v19.2)

This new view will leverage Entity Mapping Framework's superior data management performance. You will be able to handle large datasets as you would do in Server Mode, but without certain restrictions associated with it. For example, the new view will support data modification and Master-Detail layouts.

Improved Customization Options (v19.2)
We will re-design the column/band customization dialog. The design hasn't been finalized yet and we'll use the following UI metaphors as the starting point.

Grid and TreeList Customization Dialog

Improved Performance (v19.2)

ExpressBars

Right-to-Left Support (v19.1)

Office 2019 / 365 style (v19.1)

Ribbon - Office 2019 Black themeRibbon - Office 2019 Colorful themeRibbon - Office 2019 Dark Gray themeRibbon - Office 2019 White theme

Backstage View Gallery: Keytip Support (v19.2)

Backstage View - Keytip Support

Improved Performance (v19.2)

ExpressQuantumTreeList

Excel-inspired Filter (v19.1)
Same implementation as shown for the ExpressQuantumGrid.

Scrollbar Annotations (v19.2)
Same implementation as shown for the ExpressQuantumGrid.

New Expression Editor and Calculated Columns (v19.2)
Same implementation as shown for the ExpressQuantumGrid.

Improved Customization Options (v19.2)
Same implementation as shown for the ExpressQuantumGrid.

Immediate Post Option (v19.1)
This option makes most sense for editors where free text input is not available or secondary. If you use a check box or a combo box, enable this option to save the value as soon as a user switches the state or selects a different item. If the option is turned off, the value will be saved when the editor loses focus or when the user presses Enter.

We will also deliver a number of minor requests referenced by the following support tickets:
S31619, Q474048, S38934, S137786, Q328501, S139413, S130506, S133684

ExpressSpreadsheet

Right-to-Left Support (v19.2)

API Enhancements (v19.2)

  • Implement a method to evaluate custom expressions based on formulas
  • Allow to reset a cell style via its IsDefault property
  • Publish keyboard events
  • Implement an event that fires before a comment is displayed and allows to suppress the action
  • Table View worksheets - Add public method overloads that would accept cell references as strings

ExpressPivotGrid

Right-to-Left Support (v19.1)

Suggestions to be implemented in v19.1

  • Add a new HitTest option to distinguish total cells from regular data cells (S20231)
  • Introduce an event to customize cell hints, similar to the ExpressQuantumGrid's OnGetCellHint (S31915)
  • Support text fields as data fields (S135081)
  • Reduce the number of exceptions handled internally when processing Null values (T158536)
  • Implement the AlwaysExpand option for fields (T581605)

Suggestions to be implemented in v19.2

  • Add an option to hide columns/rows that don't display data (S90729)
  • Update the ApplyBestWidth logic to allow variable column widths (CS56271)
  • Support DateTime values for data fields (S19399)
  • Add a new summary type - unique value count (S90560)

ExpressScheduler

Improved Performance (v19.2)

ExpressVertical Grid

Right-to-Left Support (v19.1)

Excel-inspired Filter (v19.1)
Same implementation as shown for the ExpressQuantumGrid.

New Expression Editor and Calculated Columns (v19.2)
Same implementation as shown for the ExpressQuantumGrid.

ExpressEditors Library

  • Check Box: update the design-time editor to allow developers to specify SVG graphics for check states (v19.1)
  • Label: BBCode text format support (v19.2)
  • Label: Allow to display a glyph from a referenced Image List (v19.2)
  • Image: Allow to load the image from a referenced Image List (v19.2)
  • Radio Button: Automatic size support (v19.2)
  • Time Edit: Customizable display text and edit value format (v19.2)

ExpressLayout Control

Optional checkbox in item / group caption (v19.2)
For more information on this feature, please review the following support ticket: DS14371

Improved Splitter functionality (v19.1)
For more information on this feature, please review the following support ticket: S172176

Improved synchronization (v19.2)
For more information on this feature, please review the following support ticket: S33146

New OnResize event (v19.1)
For more information on this feature, please review the following support ticket: S134979

ExpressNavBar

Hamburger View (v19.2)

NavBar - Hamburger View

ExpressFlowChart

Allow end-users to modify shapes (v19.1)

VCL Flow Chart Control - Modify Shapes

Allow developers to define custom shapes in XML format (v19.1)

Extend the predefined collection with 30+ new shapes (v19.1)

Add new connector arrow styles (v19.1)

Flow Chart - Shape Themes

Theme support for shapes (v19.1)
The control will ship with several predefined themes that can be applied to shapes in code or via the built-in Ribbon UI.

Flow Chart - Shape Themes

Automatic shape arrangement: Sugiyama algorithm (v19.1)
This algorithm is used to draw layered networks that usually represent dependency relations. It minimizes the number of connector crossings and spreads shapes evenly.

Flow Chart - shape arrangement, Sugiyama algorithm

Guidelines within the designer for easier shape positioning and alignment (v19.1)

Draw custom shapes in code (v19.1)

PDF Viewer

Attachment Panel (v19.1)

PDF Viewer - Attachment Panel

API - extract embedded file from PDF document (v19.1)

Wizard Control

Right-to-Left Support (v19.1)

Minor Enhancements (v19.1)

  • Optionally suppress the built-in keystroke handler (T697726)
  • Capability to focus a button in code (T563301)
  • Capability to temporarily disable all buttons (T489385)
  • Antialiasing for scaled button icons (T521200)

Design Time

Merge DevExpress VCL Ribbon Form wizards into a single dialog (v19.2)

Skins

New SVG Office 2019 Colorful Skin (v19.1)

VCL Controls - SVG Office 2019 Colorful Theme

FMX Grid Control

We plan to release our FMX grid with the following capabilities in v19.1:

  • Table View
  • Layout View
  • Mater-Detail Layout
  • Edit cell data
  • Delete, Insert, Append records
  • Sort data against multiple columns

We will enhance the control with the following capabilities in v19.2:

  • Group data against multiple columns
  • Calculate totals / summaries

FMX Grid Control - Desktop and Mobile

 

As always, we welcome your feedback. Feel free to leave a comment and let us know what you think of our 2019 VCL Roadmap.

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.

XAF - Updated demos, usability enhancements, important documentation updates and more (v18.2)

$
0
0

Over the last few v18.2 minor releases we introduced several new features. Here are the highlights.

UI & UX Enhancements

  1. Introduced in v18.2.3 was the ability to enable accordion control for navigation and you’ve told us you love it, especially the nice search capabilities, SVG support and modern look and feel found in the latest version of Microsoft Outlook. To maintain that same style across your application, we have disabled icons in navigation, and also in all tabs. You can revert to the previous style with images, using the following options: IModelLayoutManagerOptions.EnableLayoutGroupImagesIModelOptionsWin.ShowTabImage and IModelRootNavigationItems.ShowImages. A complete list of default settings for new XAF v18.2 projects is available in the following KB article: Default XAF configuration options and feature toggles.
  2. WinForms LookupPropertyEditor's clear buttons (X) are now visible only when editors receive focus providing less noise on typical business forms.
  3. Your feedback is important, so new Like and Dislike buttons have been added to the XCRM, MainDemo and SimpleProjectManager apps, let us know what think about each screen.



  4. As part of our continued WinForms demo modernization we are finishing work on the updated splash screens as well as optionally enabling overlay forms in the logon screen for v19.1. These updated splash screens will be available for customization in newly created projects as well.


     
  5. Inspired by our loyal customers (S133746 and T714543) the Automatic Filtering Row to the Object Model dialog of the Column Chooser in v18.2.7 has now been implemented. The field list can be filtered to easily locate the desired field. Note: incremental search has been available since 2011.


Other enhancements & important news

  1. XAF demo pages in both the offline DemoCenter and online https://www.devexpress.com/support/demos/#xaf have been updated. Did you know that if you have v18.2.6 installed you can run our WinForms demos directly by clicking this link: dxdemo://Frameworks/XAF/XCRMFinally, DPI-Aware mode has been enabled by default for all demos and new projects in v18.2.7 (this article will be updated soon).
  2. It is no longer recommend to use XafApplication > TablePrefixes and related APIs. There are now more reliable solutions detailed here this KB article.
  3. Explained in the documentation it is recommended that object identifiers are used in criteria instead of references. Many scenarios have been fixed where ObjectDisposedException occurred with the object reference approach. Please see the following tickets for more information: T691669T691853T616104T395155T469674.
  4. Certain edge cases created a SqlException when a link was added on many-to-many collections, the team found a way to avoid the exception, details here (T297673).
  5. Good news for Entity Framework users! The standalone and design-time Model Editor now takes full Entity Framework class metadata into account (T711818).

Documentation Updates

Thanks to your feedback we have finished the major updates to the Actions documentation, this includes an overhaul to over a dozen Actions and UI elements articles, the documents have been enhanced with links, scenarios, examples, and illustrations. We hope that the improvements can help you understand Actions better, use them more efficiently, and will answer many of your questions.

    

Updates have also been made to the following articles on other UI elements, be sure to check them out:

Security system users should not miss Merging of Permissions Defined in Different Roles where we describe how the Security System processes permissions for users with several roles.

Please take a look at the new documentation and let us what you think by leaving a comment below or use the updated feedback form on docs.devexpress.com (bottom right corner).

Coming soon in v19.1 - Inspired by your feedback we are making sure that all TOP 100 popular XAF and XPO APIs have code examples for you to easier to get started with. 

Interesting Support Center Tickets

  1. New suggested ways to improve Pivot Grid List Editor performance when using large amounts of data (T687056).
  2. How to avoid excessive ConditionalAppearance rule updates and improve overall form performance by following these tips: S171794.
  3. There are some users who prefer the old E4037 example over the recommended Use Google, Facebook and Microsoft accounts in ASP.NET XAF applications solution in ASP.NET. If you encounter similar requirements then we would love to hear from you by providing answers to the questions asked in T705146
  4. The article on how to create business classes and members at runtime (T284822) has been improved.
  5. On the recent blog post, it was recommended using nameof keyword instead of hardcoded property names in XPO business objects. This can be done using the CodeRush templates. For any of your existing applications, ticket T713839 contains some regular expressions to use in Visual Studio's Find and Replace | Replace in Files dialog. 
  6. How to group Actions from a category within a drop down or context menu (T709407).
  7. New solutions to show a popup window from another popup (T711034).
  8. Fixed an issue with DBUpdater ("An attempt was made to load a program with an incorrect format") when a target project's 'Platform target' property is 'x64' (T707637).
  9. A warning about namespaces for VB.NET users of the ORM Data Model Wizard (T705913).
  10. Clarification on the use of Session in XPO objects vs the use of IObjectSpace to run your business logic (T716446).

Your Feedback is needed!



DevExtreme - New Sankey Diagram (v18.2)

$
0
0

Please listen up, all you data analysts: DevExtreme now supports a Sankey diagram. This diagram displays relationships between nodes, which are technically called links. From the perspective of the data, this is often about flow, for instance of goods or services – but any type of relation between groups of subjects can be visualized by a Sankey diagram.

As usual, the new functionality is available on all platforms supported by DevExtreme, including Angular, Vue, React, jQuery and ASP.NET MVC and ASP.NET Core.

Sankey Diagram

The diagram above can be rendered using the following code. You can see how the weight values are automatically rendered as links of differing widths.

$(function() {
  $('#sankey').dxSankey({
    dataSource: [
      { source: 'Brazil', target: 'Portugal', weight: 5 },
      { source: 'Brazil', target: 'France', weight: 1 },
      { source: 'Brazil', target: 'England', weight: 1 },
      { source: 'Canada', target: 'Portugal', weight: 1 },
      { source: 'Canada', target: 'France', weight: 5 },
      { source: 'Canada', target: 'England', weight: 1 }
    ],
    link: {
      colorMode: 'gradient'
    }
  });
});

A demo for the Sankey diagram is available, which you can modify and play with yourself. We also have Overview and API documentation available.

Thanks to everybody who already provided us with feedback during the development phase of this widget. We are still interested in your thoughts! Please feel free to leave a comment below, and it would be great if you could submit your responses to this short survey:

DevExtreme - Color Swatches (v18.2)

$
0
0

You can now create and use multiple DevExtreme color schemes within the same application. For instance, you can implement a dark navigation sidebar with a light content area. This feature is available in the both ThemeBuilder UI and CLI tools.

What's a color swatch?

Color swatches are secondary color schemes used alongside a primary color scheme. You can use them to stylize parts of your application differently, for instance, when the navigation sidebar should be dark and the content area light.

DevExtreme - Custom Themes - Color Swatches

The DevExtreme CLI and DevExtreme ThemeBuilder can generate a CSS file to apply a color swatch to a container.

Limitations / Plans

Swatches work for color schemes only. It is not possible to mix themes (material and generic) on the same page.

Color swatch styles are contained in a separate CSS file. In v18.2, the size of this file is comparable with the size of the theme’s CSS file. Adding more than one color swatch in your application may cause performance issues and is not recommended. We plan to improve this scenario by introducing a modular approach to DevExtreme widget styles in a future release.

A swatch is implemented by adding a CSS class to an HTML container. If one swatch is applied to a given container, it is not possible to apply another to any widget inside this container.

Test It Today

Learn how to create a swatch here - https://js.devexpress.com/DevExtreme/Guide/Themes_and_Styles/Predefined_Themes/#Color_Swatches.

See it in action here - DevExtreme Angular Application Template (uses a swatch for the left menu).

Your Feedback Counts

We’d like to hear from you about your development plans and needs. Feel free to leave comments below, open Support Center tickets for detailed discussions or take part in conversations in our GitHub repository.

DevExpress at BASTA Spring in Frankfurt

$
0
0

This week, DevExpress is proud to be Gold Partner of the BASTA.NET Spring conference in Frankfurt.

BASTA

John, Alexander Bykov, Alexander Chuyev and I will be available at our DevExpress Booth and we will be more than happy to show you everything about our latest product versions.

Oliver will also be occasionally available at our booth but he’s got a number of sessions as well which are interesting to attend to. I will have a C# coding session as well for all of you wanting to improve your coding skills.

We’ll be handing out our original eat-sleep-code T-Shirts so if you’re attending to BASTA, make sure to collect one.

DevExtreme for Vue - 70+ UI and Data Visualization Vue Components Available as RTM (v18.2)

$
0
0

Great news - the DevExtreme Vue Components are now available as RTM! We have tested and finalized the functionality of our excellent Vue Components. Our support people are happy to help you with any issues you encounter and give you the help you need to use DevExtreme widgets in your Vue apps.

We're still working on improving our documentation and demos but rest assured, they'll be released soon. Let's take a look at what this release offers you.

DevExtreme Base

We revised the existing functionality to ensure our Vue Components are ready. Under the hood they use the DevExtreme core written in pure JS, so we focused on integrating cool DevExtreme features like templating into Vue ecosystem.

Our components support all essential Vue features like 2-way data binding using .sync or v-model directives or handling events through the v-on(@ shorthand) directive as well as defining widget templates through Vue slots and options validation.

Therefore, you benefit from both Vue's flexibility and DevExtreme's rich functionality. Learn more here.

Configuration Components

To easily set up our widgets with their detailed options we implemented configuration components. These are elements that are nested in code as if they represented sub-elements of a widget, but technically they only carry the configuration data. This means that options can be supplied declaratively and selectively, with default fallbacks in place. Also with configuration-components, you’re able to use .sync directive for their props, which makes options control more precise.

Read the documentation topic to learn more.

Demos

Test Online Demos here.

Limitations / Plans

Currently, not all demos are available for Vue though we're working on finishing them for a future release. We’re also enhancing and improving the documentation.

Test It Today

To use DevExtreme Vue Components install the package(s) from npm:

npm install --save devextreme devextreme-vue

Installation details here.

Feedback

We are interested to hear your thoughts on the DevExtreme Vue components. Please answer the following short survey. Then leave a comment below, thanks.


Microsoft Ignite - The Tour : Sydney Recap

$
0
0

A little over a week ago, the Microsoft Ignite Tour hit the picturesque city of Sydney, Australia. With a great mix of DevOps, Developers and other IT-Related people the conversations ranged from BI, Reporting and developer frameworks. I was joined by my esteemed colleagues John Martin and Don Wibier to help share information on the wide range of DevExpress products. It is always a great time talking with the existing and potential customers about their needs, what cool technologies they are involved in or just IT in general. A big thank you to everyone who stopped by the booth to say G'day and congratulations to the raffle winners. Be sure to look for us at the other Microsoft Ignite Tour destinations.

Here are some images we managed to snap over the two days:

Desktop Development Survey

$
0
0

As you’ve probably noticed, we’ve been soliciting feedback on features/products you’d like to see us add to our portfolio in 2019. One of our objectives next year is to refine our demo applications and incorporate relevant functionality – functionality you and your team are likely to use in your own software projects. To that end, we’ve put together a lengthy survey to help us better understand your needs.

The survey contains 8 pages:

  • Your Organization
  • Generic Development Platform Questions
  • Navigation and Layout Controls
  • Grid Controls
  • Office-Inspired Controls
  • Data Visualization and Analisys Controls
  • Reporting, Dashboard, and PDF Viewer
  • XAF

The time required to complete the survey will depend on how many DevExpress products you use and how much feedback you are willing to share, as a few questions are open-ended. You can skip the questions or pages that are not relevant to your projects.

Web Development Survey

$
0
0

As you’ve probably noticed, we’ve been soliciting feedback on features/products you’d like to see us add to our portfolio in 2019. One of our objectives next year is to refine our demo applications and incorporate relevant functionality – functionality you and your team are likely to use in your own software projects. To that end, we’ve put together a lengthy survey to help us better understand your needs.

The survey contains 10 pages:

  • Your Organization
  • Generic Development Platform Questions
  • End-User Devices
  • Themes
  • Navigation and Layout Controls
  • Grid Controls
  • Office-Inspired Controls
  • Data Visualization and Analisys Controls
  • Reporting, Dashboard, and PDF Viewer
  • XAF

The time required to complete the survey will depend on how many DevExpress products you use and how much feedback you are willing to share, as a few questions are open-ended. You can skip the questions or pages that are not relevant to your projects.

DevExtreme React Scheduler - New Native React Component CTP (v1.10.3)

$
0
0

Our Native React product family has a new member: a scheduler component. We released it as a CTP version with v1.10.3 of the DevExtreme Reactive components. An overview of the new component can be found here.

The new component is based on the same plugin-based architecture we first developed for our React Grid. It supports both controlled and uncontrolled state modes, like our othe components. At this time, Material-UI is supported for rendering and theming of the component.

Appointment Types

Two appointment types are currently supported: one-time appointments and all-day appointments. Support for recurring appointments is part of our plans.

Appointment Types

Documentation and demos are available here

View Types and View Switcher

The current version supports three view types: Day, Week and Month. Using a built-in view switcher, end users can change the current view.

View Types and View Switching

Here are related documentation and demos

Editing

An edit form is supported at this stage to edit appointments at runtime. We plan to implement drag&drop editing operations and resizing soon.

Editing

Editing Documentation and Demos are here

Date Navigator

The DateNavigator plugin provides navigation functionality for the user, either using previous/next page buttons or a date selector.

Date Navigator

Here are documentation and demos about date navigation

Appointment Tooltip

The AppointmentTooltip plugin is available to show appointment details to the user when the mouse hovers over an appointment.

Appointment Tooltip

Try It Today!

You can install the package and its dependencies like this:

npm install --save @devexpress/dx-react-core @devexpress/dx-react-scheduler @devexpress/dx-react-scheduler-material-ui

Your Feedback Is Important

All comments are appreciated, so please feel free to add them to this post or to open a Support Center or GitHub ticket for further discussion. It would be great if you could take the time to submit your answers to this short survey:

Microsoft Ignite – The Tour : London

$
0
0

Last week, London decided to have the warmest couple of days in February since records began, and Rachel Hawley and I (along with many, many other people) decided to spend them inside the ExCel Centre in London Docklands for Microsoft Ignite – The Tour. Rachel and I were staffing the DevExpress booth, discussing our products with attendees, and – purely coincidentally, I’m sure – giving away swag. The gloves with the touch-sensitive fingertips were completely unnecessary that week, but I’m sure have been used since.

DevExpress swag

We did have some great conversations with people, whether they were already DevExpress customers or were contemplating using our controls and frameworks in the future. We made lots of notes: ideas for future features, insights into what developers were doing with our controls, concerns people had with our products. Needless to say, those notes are being shared with our dev teams.

Demonstrating

And it is a truism that the best demos to show off in the booth are those that are online. Especially those with dashboards and visualizations…

Demonstrating charting

Of course, I shouldn’t forget that we also met some old friends from the Microsoft world: hi, Betsy, Seth, and Scott!

After some successful “Ignites” – Berlin, Sydney, and now London – we’re debating whether to attend another, and where. Let us know!

DevExtreme React Chart Beta Now Available

$
0
0

With version v1.10.0 of the DevExtreme Reactive components we published a Beta version of the React Chart.

We have worked hard to finalize the feature set since our CTP release. Detailed documentation can be found here and demos of most chart types are also available.

Here are some of the latest features we added.

Hover And Selection

Series points can be in hovered and selected states. This is supported by the EventTracker plugin in combination with one or both of the HoverState and SelectionState plugins. Other plugins can take advantage of this state information, or you can use it yourself in your code.

Hover and Selection States

Documentation and samples for these features are available here.

Tooltips

The Tooltip plugin makes it easy to show values of series points when the mouse hovers over them – or any custom information!

React Chart Tooltip

Documentation and samples for the Tooltip plugin are available here and this demo shows an example of a customized tooltip.

Reveal Animation

The Animation plugin animates chart series when they are first displayed. It is possible to modify animation options by implementing custom Point components, as demonstrated on the documentation page for the feature.

Reveal Animation

Try The Chart Now

The Beta is available now. A few simple npm or yarn commands get you started, as described here.

Let Us Know Your Thoughts

We are very interested in your comments! Please feel free to reply below or to open a Support Center or GitHub ticket for detailed discussion. We would appreciate it if you’d submit your responses to this quick survey:

Reporting - Parameter Enhancements (v18.2)

$
0
0

The Report Parameter feature is crucial to almost any report. It is the main mechanism available to end-users to control report output, using parameters for filtering, sorting or even dynamic grouping of data. This post describes some new functionality we brought to Report Parameters in v18.2.

Allow Null Input

Report Parameters now allow you to select a null value. Of course it is up to your data retrieval logic how this value is interpreted. Here is an example of a stored procedure that returns either a filtered or a complete result set depending on the parameter value passed in:

CREATE PROCEDURE GetOrders
  @OrderId int = null
AS
BEGIN
  SET NOCOUNT ON;
  SELECT * FROM Orders WHERE
    (@OrderId IS NULL OR Orders.OrderID = @OrderId)
END

While creating a report in the data source wizard or creating a new parameter in the designer, enable the Parameter.AllowNull property:

Create New Parameter

If you clear the Value property of the report parameter, its default value will be null.

At runtime, a (none) item is now included in the drop-down editor for the report parameter:

None Item in Drop Down

For parameter editors without a drop-down, you can just delete the value or click the cross button in Web Document Viewer parameter editors:

Web Parameter Editor Cross Button

Look-Up Parameter Sorting

This new feature allows you to sort look-up values displayed in the drop-down of a report parameter. By default, these values are displayed in the order defined by the data source, e.g. by an ORDER BY clause in SQL. Now you can configure the SortOrder and SortMember properties to set up sorting independently of the data source . You can even sort by members that are not used as DisplayMember or ValueMember:

Sorting Look-Up Parameter Value List

“All selected” Text For The Multi-Value Parameter Editor

This user interface enhancement clearly shows when all available values in a list are selected. The text All selected (<count>) is displayed in this case:

All selected

If you include selected parameter values in a report and you’d like to easily display a similar All Values Selected state information in a label, here’s a custom expression binding function implementation that does this:

public class Parameter_AllSelectedFunction : ICustomFunctionOperatorBrowsable {
  public int MinOperandCount => 2;
  public int MaxOperandCount => 2;
  public string Description => "Parameter_AllSelected(XtraReport report, string parameterName) \r\n Checks if all items are selected for a multi-value parameter and returns an indicative string value";
  public FunctionCategory Category => FunctionCategory.All;
  public string Name => "Parameter_AllSelected";

  public object Evaluate(params object[] operands) {
    XtraReport report = operands[0] as XtraReport;
    Parameter p = (report).Parameters[(operands[1].ToString())];
    if (p.MultiValue == false || p.LookUpSettings == null)
      return "Not a multi-value parameter";
    LookUpValueCollection col = LookUpHelper.GetLookUpValues(
      p.LookUpSettings, new XRDataContext());
    if (col.Count == (p.Value as Array).Length)
      return "All Values Are Selected";
    else if ((p.Value as Array).Length == 0)
      return "No Values Are Selected";
    return p.Value;
  }

  public bool IsValidOperandCount(int count) => count == 2;

  public bool IsValidOperandType(int operandIndex,
    int operandCount, Type type) =>
      (operandIndex == 0 && typeof(XtraReport).IsAssignableFrom(type)) ||
      (operandIndex == 1 && type == typeof(string));

  public Type ResultType(params Type[] operands) => typeof(string);
}

Register this function in your app as described in the CustomFunctions help topic, and then use it in an expression binding:

Parameter_AllSelected([ReportItems].[Report], 'Categories')

We are considering for the future to provide a feature that selects all parameter values by default, both for static and dynamic lists. What are your thoughts on this?

A Parameter.Tag Property

We introduced this enhancement in the minor v18.2.5 update. As usual, the Tag property enables you to store extra information together with a standard object, in this case the Parameter. There had been a few requests for this functionality, targeting scenarios where end users create report parameters in the designer. Using the Tag property, these parameters can carry information that is evaluated in event handlers like CustomizeParameterEditors and ParametersRequestBeforeShow, or in a custom implementation of the ParameterTemplateSelector class.

Bonus Feature: Support For A “?” Prefix In Expression Bindings

This is for the convenience of the report developer: to easily include a report parameter in an expression, simply type a ? (question mark) and then pick the parameter from the popup list. This replicates the behavior of the old FilterString property editor and makes working with parameters in the Expression editor just as simple!

Question Mark prefix

Your Thoughts Count

Please feel free to let us know what you think by leaving a comment or opening a Support Center ticket. Your reply to this short survey would also be much appreciated:

For future releases, we plan further enhancements to the Report Parameter feature set. We will talk more about this at a later point, but we’d like to hear from you if you have report parameter scenarios that currently require custom coding.


CodeRush Server–New Release (v18.2.6)

$
0
0

We have released an update to the CodeRush Server CTP, available on the Visual Studio Marketplace.

New in this release:

Repository Branch Support

The Dashboard now supports repository branching, letting you navigate through your repository’s branches and evaluate the health of each branch individually.

CodeRushServer_Branches

Self-Hosted Build Agent Compatibility

  • The Analyze task is more lightweight, and no longer requires Visual Studio to be installed on a build agent (learn more).
  • Code Coverage calculation now works as expected when a build agent is configured as a service.

Unit Testing Enhancements

  • The Analyze task now provides the Exclude tests in categories option, which lets you ignore tests by category.

CodeRushServer_ExcludeTests

Excluded tests are marked as Ignored on the Unit Tests page:

CodeRushServer_IgnoredTests

  • CodeRush Server can now run NUnit 3.11 tests.


Code Analysis Enhancements

  • This update includes bug fixes and performance improvements made in the Code Analysis engine.


Other Improvements

  • The Code Coverage results page now supports filtering.
  • Mouse wheel scrolling now works as expected across supported web browsers.


Give It a Try (And Tell Us More)

Download CodeRush Server CTP from the Visual Studio Marketplace and let us know what you think! Also, please help us better understand your needs with the survey below:

DevExtreme – New ThemeBuilder

$
0
0

Maybe you already noticed the beta-versions alert in our DevExtreme ThemeBuilder. We have been working very hard on an improved version which makes it even more simple to create a very slick custom theme for your DevExtreme client-side app.
Whether your app is build with Angular, React, Vue, ASP.NET MVC and .NET Core or even jQuery, you can apply your theme on all of those technologies.

We’ve taken a good look at your feedback on the usability as well as some technical improvements on our own todo-list.

This has resulted in a new design with some awesome new functionality!

What has been done

One of the first things to notice is the choice you’ll get when starting the new ThemeBuilder. You can start importing an existing theme or use one of the standard themes included with DevExtreme. This also includes the super slick Material Themes we’ve recently added to DevExtreme.

Theme colors

Once working on a theme, you’ll be able to generate a color swatch – a new v18.2 feature to make styling your app more simple. These swatches are secondary color schemes alongside a primary color scheme. You can read more about this in one of Mehul’s recent blogposts.

Advanced settings

Besides the swatches, we’ve also extended the advanced settings section to change more detailed styling features. This works for common styling as well as advanced widget styling.

Another thing is that base constants can now be specified in a separate view. In many cases, only this will be enough to create a customized look and feel for you app.

Improved import and export

As a result of adding the swatches feature, on of the things we also improved is the import and export functionality of the new Themebuilder. As you can see in the picture below, there is not only an option to export swatches, but also a button to import/export files.

DevExtreme CLI integration

One of the other cool things with the new ThemeBuilder is the integration with our DevExtreme CLI. When generating the metadata for your custom theme, the ThemeBuilder uses a number of routines which are also used by the DevExtreme CLI. This allows you to pass the ThemeBuilder generated metadata as input into the CLI.

This CLI integration makes it possible to generate your CSS in a Continuous Integration environment, and it makes upgrading to a newer version of DevExtreme easier.

The ThemeBuilder metadata from one of your custom designed themes can also be used when generating a new Angular project with the DevExtreme CLI.

More to come

We’re still impoving this brand new ThemeBuilder on a couple of different aspects like: finalizing a new user-guide on this release of the ThemeBuilder and we tune and tweak the advanced settings to give you even more control over the way the DevExtreme controls look.

Angular, Vue, React, ASP.NET MVC / Core and more

All the generated themes can be applied to applications build with any of the frameworks DevExtreme supports including:
Angular, Vue, React, jQuery, ASP.NET MVC and .NET Core.

Try it now?

If you want to give this new ThemeBuilder a test-drive, check it out here!

What do you think?

Let me know what you think of this by replying on this article or if you have questions or suggestions, then please take part in the discussion about this feature on GitHub.

eXpressApp Framework – Early Access Preview (v19.1)

$
0
0

We are two months away from our next major update (v19.1). The purpose of this post is to share details and give users the opportunity to test new functionality before we wrap up our current dev cycle. If you own an active Universal or DXperience subscription, you can download the CTP build from the DevExpress Download Manager and test the features described in this blog post. Let us know how well the new features address your requirements. This will help us fine-tune our code before the launch.

If you are using a trial version and want access to the new XAF features today, purchase a Universal subscription license and you will automatically receive access to the CTP version. If you are ready to upgrade to Universal from another subscription level, email us at clientservices@devexpress.com for preferential upgrade pricing.

ASP.NET WebForms RTF Editor & WinForms Spreadsheet Editor

We've come a long way since we first introduced WinForms Office module in 2018. The module now includes WinForms Spreadsheet and ASP.NET WebForms RTF editors. You can use them to display and edit Word and Excel documents stored in string or byte array properties of your business objects.

To learn more about the new capabilities and to help shape our future development, read this knowledge base article and answer a few questions from the R&D team.

Our long-time customer, Finland-based EarthCape OY, kindly allowed us to share their use-case for these new editors. They currently rely on custom-built property editors in their XAF-based platform. Scientists in the DNA Laboratory at the Finnish Museum of Natural History use these controls to make notes.

.NET Core 3 and Visual Studio 2019 Support

Good news from our labs! We succeeded in adjusting our v19.1 WinForms MainDemo so that they run under .NET Core 3.0. We have not yet published dedicated demos on GitHub as our WinForm team did. We still need cover SPA UI functionality with tests and ensure that all our internal tests pass in the new environment. If you're interested in adjusting your projects manually to run them under .NET Core, let us know via the Support Center and will guide you through the required steps.

XAF Solution Wizard, Model Editor, and Application & Module Designers now all work in Visual Studio 2019 Preview 4+. If you are running a compatible Visual Studio version, let us know how these features work for you. Take note that we have optimized the Solution Wizard for faster project generation.

SPA UI Updates

The following new capabilities are supported in v19.1 CTP:

  • Basic security system functions: logon form for non-authenticated users and automatic data filter based on security permissions.
  • New property editors for Boolean, enumeration, image, and reference properties.
  • End-users can enable a compact theme and customize base theme colors at runtime.

To learn more about these and other capabilities, read this knowledge base article.

Universal customers are welcome to join the discussion on SPA UI roadmap and technical requirements in the dedicated private forum.

New WinForms Splash Screens

We have updated the splash screens used in our demos and in new projects.

You can optionally enable an overlay animation instead of the splash screen. The animation will run after users click the 'Log In' button and until the main form appears. If you prefer this behavior, set the protected property WinApplication.ExecuteStartupLogicBeforeClosingLogonWindow to True and use the DXSplashScreen type in the YourSolutionName.Win/WinApplication.xx file:

public YourWindowsFormsApplication() {
    SplashScreen = new DXSplashScreen(typeof(YourSplashScreenType), new DefaultOverlayFormOptions());
    ExecuteStartupLogicBeforeClosingLogonWindow = true;
...

ASP.NET WebForms User-Friendly URLs for Views

We've simplified URL customization for ListViews and DetailViews in Web apps with the new RouteManager API. For example, you can now customize URLs to match the following highly requested format:

BEFORE:
*/Default.aspx#ViewID=Contact_ListView
*/Default.aspx#ViewID=Contact_DetailView&ObjectKey=ContactId

AFTER:
*/Contact_ListView/
*/Contact_DetailView/ContactId/

To learn more about this new capability, read this knowledge base article.

We Need Your Feedback!

We appreciate any thoughts you share to the comments section below, the Support Center tickets or our team email xafteam@devexpress.com. It would also help us if you could answer the questions in the survey below. Thank you very much for your help!

Interesting Support Center Tickets

  • Our long-time customer described how he complied with GDPR requirements using XAF security system permissions (T576415).
  • We have updated our KB article on how to avoid the creation of an extra index along with a foreign key for a reference type property in XPO (S138633).
  • We have published a KB article on how to resolve the following error: 'DevExpress.Xpo.Exceptions.SessionMixingException: object belongs to a different session' (T720705).
  • We have provided a Web example on how to create a custom ListEditor based on ASPxCardView (T526272).
  • Inspired by customer feedback, our recent v18.2.7 update has more flexibility with regard to the state of the ResetPassword and ChangeMyPassword Actions when DetailView is in edit mode (T716175).
  • Another reminder about NGEN: this standard for .NET way can cut the startup time almost in half (T719697).

Find other interesting customer questions and product enhancements for your favorite products in the DevExpress Support Center (the "Frameworks (XAF & XPO)" group on the right) and in What's New documentation (see resolved issues).

eXpress Persistent Objects – Early Access Preview (v19.1)

$
0
0

We are two months away from our next major update (v19.1). The purpose of this post is to share details and give users the opportunity to test new functionality before we wrap up our current dev cycle. If you own an active Universal or DXperience subscription, you can download the CTP build from the DevExpress Download Manager and test the features described in this blog post. Let us know how well the new features address your requirements. This will help us fine-tune our code before the launch.

If you are using a trial version and want immediate access to the features we mention in this blog post, purchase a Universal or DXperience subscription license and you will automatically receive access to the CTP version. If you are ready to upgrade to Universal or DXperience from another subscription level, email us at clientservices@devexpress.com for preferential upgrade pricing.

Async/Await Method Enhancements

Asynchronous execution was implemented at the XPO layer in v18.2. Connection providers used synchronous versions of IDbConnection, IDbCommand, IDataReader, and other ADO.NET API. We have now propagated our async/await method support to the underlying ADO.NET drivers.

XPBindingSource

XPBindingSource is a lightweight data source for WinForms and WPF runtime-only applications. It serves to data-bind UI controls and uses XPO sources internally (XPCollection, XPQuery, XPView). Think of it as an XPO analog of the standard BindingSource.

XPBindingSource simplifies development in the following use cases:

  • XPO data sources used on visually inherited Windows Forms and User Controls (T121952).
  • Data refresh in persistent objects and collections (A643).
  • Immediate data refresh in bound UI controls (T685021).
  • Binding to nullable properties (S33566).
  • Binding to object references without complex or custom property descriptors (T319505).

Refer to the WinForms and WPF code examples to get started.

Connection Provider Enhancements

Prepared SQL statements for PostgreSQL can be used to increase INSERT and SELECT operation performance between 40% and 80%, depending on your data model structure and use-case scenario. For more information, check out our implementation and test results in this KB article.

XPO now supports PostgreSQL 'date' type and maps it to System.DateTime. Note that we haven't introduced any breaking changes into XPO-generated databases. eXpress Persistent Objects continues to map System.DateTime to 'timestamp'.

Static methods GetConnectionString() in PostgreSQL, DB2, SQL Server, MySQL, and Firebird connection providers now support a port parameter. ORM Data Model Wizard displays the corresponding field in the UI:

We Need Your Feedback!

We appreciate any thoughts you post to the comments section below. It would also help us if you could answer the questions in the survey below. Thank you very much for your help!

Love XPO and want to help us promote it? Add the package through Nuget.org instead of DevExpress Nuget!

Spreadsheet – Early Access Preview (v19.1)

$
0
0

We are two months away from our next major update (v19.1). The purpose of this post is to share details and give users the opportunity to test new functionality before we wrap up our current dev cycle. If you own an active Universal or DXperience subscription, you can download the CTP build from the DevExpress Download Manager and test the features described in this blog post. Let us know how well the new features address your requirements. This will help us fine-tune our code before the launch.

If you are using a trial version and want immediate access to the features we mention in this blog post, purchase a Universal or DXperience subscription license and you will automatically receive access to the CTP version. If you are ready to upgrade to Universal or DXperience from another subscription level, email us at clientservices@devexpress.com for preferential upgrade pricing.

New Layout Engine and Performance Enhancements

The new Spreadsheet layout calculation engine helped us improve layout accuracy, increase render and scroll performance, and enhance printing capabilities.

Merged Cells

We have optimized how we store merged cell ranges. The change brings significant performance benefits for documents with a high number of merged cells. The chart below shows the time needed to delete 800 rows in a document with 14,000 merged cells:

Formula Calculation

We have significantly increased formula calculation performance. The change comes as the result of the following optimizations:

  1. We have improved calculation process for time-consuming functions (SUMIFS, SUMIF, COUNTIFS, COUNTIF, AVERAGEIF, AVERAGEIFS, MAXIFS, and MINIFS).
  2. When we aggregate data in a cell range, we first evaluate most popular aggregate functions for this range: SUM, MAX, MIN, COUNT, COUNTA, AVERAGE. We store these results in a separate collection and use them on demand.
  3. After the calculation process stops or fails, we save the results and use them to perform consequent calculations.

We continue to optimize formula calculations and plan to implement multi-threaded operations in the upcoming v19.1 release. Below are the results for the CTP version. We ran our test on a set of complex files with multiple formulas. The chart shows the total formula calculation time for all files within the set:

Render Performance

The new layout engine noticeably increases the render speed for the visible cell area. The following chart compares “before” and “after” performance using a sample worksheet with 43 visible rows and 17 columns and a total of 25000 rows and 28 columns:

Scrolling

To improve scroll performance, we now calculate the layout beyond the visible area. This helps us avoid excessive recalculations when a user scrolls a document. We make a snapshot of the visible area, move it, and render new parts of the document that were not visible before.

The following chart shows the change in scroll performance for a worksheet from the previous example. The sheet is moved one row down:

This is not the complete list of usage scenarios where you might notice performance enhancements. If you’re working with large documents, please check the CTP version of our Spreadsheet controls and Spreadsheet Document API and let us know about your results.

New Excel 2016 Functions

Our Spreadsheet controls and Spreadsheet Document API now support the following Excel 2016 functions:

  • CONCAT
  • TEXTJOIN
  • IFS
  • SWITCH
  • MAXIFS
  • MINIFS

Simplified Formula Creation

You can now use arrow keys to select referenced cells in the current worksheet when you create and edit formulas.

Black and White Print Mode

The WinForms and WPF Spreadsheet controls and Spreadsheet Document API allow you to print your documents in black and white.

We Need Your Feedback!

We appreciate any thoughts you share to the comments section below, the Support Center, tickets or our team email officeteam@devexpress.com. Thank you very much for your help!

Viewing all 2402 articles
Browse latest View live