Looking into the crystal ball: Breaking changes for v2007.2

24 May 2007

The various development teams have now provided all of the breaking changes you can expect for DXperience v2007 vol. 2. (And yes, a corollary of this means we're getting reasonably close to beta test and thence to release.)

Although there are a lot of breaking changes, they have been necessary in order to make the controls much easier to use or to effect some architectural changes to help prepare us for some new functionality later on in the year (of course, some of that functionality will be part of 2007.2, but I'll leave the new features for another post). I'm sure you'll agree that some of the changes promised here are for the better.

Without further ado...

ASP.NET Controls - CSS Support Changes

In previous versions of our ASP.NET controls, we used inline styles as a primary way to customize their visual appearance. This meant that default appearances and Auto-Formats were applied using properties on each control, which were then converted into inline styles. The main benefit of this approach was the simplicity of customizing appearances. You didn't have to care about styles for each element in each state. If a border was shown around an element in hot-tracked state then this element's padding was automatically reduced by the border width when needed.

Put simply, this customization simplicity had bad conflicts with CSS styles. If styles are set via CSS, it's nearly impossible to determine which settings are applied, hence an automatic style adjustment cannot be made. Previously, we chose simplicity over complete CSS support and that's why some appearance settings could be specified only via control properties.

With the release of version 2007.2, we have decided to change how our ASP.NET controls work in favor of complete CSS support. This means that you will be able to customize every style aspect using cascading stylesheets. If you do so, you are completely responsible for providing all settings for all element states because we disable automatic adjustments if either border size or padding isn't specified explicitly. But note that automatic adjustments will still work if you set styles via control properties.

So if you upgrade your existing applications to DXperience v2007 vol. 2, you can expect control behavior changes under certain conditions. Since we have changed the default appearances to cascading style-sheets, this may lead to disabling automatic style adjustments. In these instances, you will need to manually update styles to provide the proper sizes, paddings and border styles to elements.


XtraEditors Library - New List Box Controls

In version 2007.2, we have completely re-designed the following controls from the XtraEditors Library: ListBoxControl, ImageListBoxControl and CheckListBoxControl. All these controls had the same base engine which, to put it mildly, had become quite hard to support. Some deep-down architectural problems made it hard to fix issues and implement new functionality. There was no way to overcome these problems, apart from rewriting the controls.

Though the public interfaces have remained unchanged, a lot of changes have been made to internal functions. If you rely on these functions, you will most likely need to update your code to avoid errors and unexpected behavior.


XtraBars Suite - Tab Access in RibbonControl

Previously, you could access all ribbon tabs via the RibbonControl.Pages property. This has changed with the introduction of context-sensitive tabs.

Pages will not belong to the RibbonControl anymore. Instead, we've introduced some intermediate objects called categories. A Ribbon will always have at least one default category. This category will contain pages whose visiblity doesn't depend on the current context. To display context-sensitive tabs, you will need to create additional categories.

Now here's what may change. If you previously wanted to do something with all pages in a Ribbon, you would use the RibbonControl.Pages property to access them. In 2007.2 this property will now return only pages from the default category, that is, all pages that are not sensitive to context. In turn this means that if you don't use context-sensitive tabs, your code will still work. Otherwise, you must take into account that the Pages property won't return all the pages anymore. If you need to traverse through each and every page within a RibbonControl, you will need to traverse all categories in it.


XtraCharts Suite

  • The PaletteName property of the ChartControl, WebChartControl and XRChart classes doesn't accept empty strings anymore. If an empty string is assigned to this property, an exception is raised. This means that an empty string value is now treated in the same manner as an incorrect palette name.
  • The previous point also applies to the AppearanceName property.
  • The SeriesLabel class is now inherited from the SeriesLabelBase class. Two base classes - SimpleSeriesLabel and ConnectorSeriesLabel - have been united into a single SeriesLabelBase class.
  • If a series is bound to data and its datasource is populated, series points will be available via the Points property. Previously, the Points collection would be empty if an external data source is used.
  • The same applies to series created automatically when using the SeriesTemplate property. If the bound data source has been populated these series will be available via the Series property.
  • Runtime hot-tracking and selection behavior for automatically created series has been changed. Now it's possible to select a single series, while in previous versions all auto-created series were selected together.

XtraPrinting Library and XtraReports Suite

In v2007.2 we've greatly redesigned the XtraReports core, and some of these major changes may break your code.

For example, we've unified an internal "brick" representation of XtraPrinting and XtraReports. Now all report controls (all XRControl class descendants) render themselves using native XtraPrinting bricks, while in previous versions every report control rendered itself using control-specific bricks.

Also, we've radically changed our Page Builder, and this also may cause some of your code to function differently from previous versions.

These changes allow us to achieve many important goals, including the following:
  • Documents created with XtraReports now can be scaled within the Print Control, just like other XtraPrinting documents.
  • XtraPrinting and XtraReports documents are exported using the same unified and more reliable procedure.
  • Pages of several XtraReports and XtraPrinting documents can now be merged into a single document. You can print such combined documents, show them within a Print Control, or even export to any supported format.
  • It's now easier to create a custom report control. You don't need to override numerous protected methods so that your custom control can be exported to various formats. Now you need to override only two basic methods to create a correct representation of your custom control using XtraPrinting bricks - and this control will be successfully exported to all available formats. See the XtraReports documentation for more information on creating custom report controls.
  • It's now possible to search text in the PrintControl which displays an XtraPrinting library document. In previous versions it was possible with XtraReports documents only.
  • HTML export has been significantly improved. Less code is now generated, the HTML page looks more like the original printed page and memory consumption has been reduced.
  • In the future, we're planning to implement the possibility to save Print Preview to a document, and also to edit a report directly in Print Preview. All this can be implemented much more easily now we've unified XtraPrinting and XtraReports brick technologies.
Following are the list of breaking changes we had to make to achieve the above goals. Some changes are really minor and to be honest we are not really sure that anyone used our controls in such a way that would lead their code to break because of these changes. Some changes might be very painful (for example, a new way to create custom report controls) - but unfortunately we can't move forward without these changes.

XtraPrinting Library

  • If the ImageBrick.SizeMode property is set to AutoSize, the effect is the same as setting it to Normal.
  • When an ImageBrick is exported to HTML, an empty space between picture and border is not included into the resulting document.
  • The borders and background of a LineBrick are now visible.
  • The CustomBrick.ShowFromNewPage method has been removed. Use the Document.ShowFromNewPage(Brick brick) method instead.
  • The BookmarkNode.Nodes property's type has been changed to IBookmarkNodeCollection.
  • The date-time format for PageInfoBrick should now be set to "{0:d}" instead of "d" (like with the XRPageInfo control in XtraReports).
  • The ViewData class was removed. This control's members could be mainly used when creating custom report controls. Now there's a completely new much easier procedure that doesn't require you to use this class.
XtraReports Suite
  • The custom control creation procedure has been significanlty simplified. At the same time, custom controls created with previous DXperience versions will not compile and work. Unfortunately, you will need to re-write all custom controls. Note that this will become much easier.
  • The ControlViewData class isn't inherited from ViewData anymore.
  • Classes responsible for managing shapes and bar codes have been moved from the XtraReports Suite to the XtraPrinting Library. At the same time, non-abstract Shape and BarCodeGenerator classes are still available in XtraReports, but marked as obsolete. This means that old code will still work but to avoid compilation warnings, simply re-serialize your reports.
  • BarCodeGenerator classes don't support the IXRSerializable interface (except for obsolete classes in XtraReports).
  • XRBarCodeGeneratorBase, XRUPCEGeneratorBase, XRUPCSupplementalNGeneratorBase are moved to DevExpress.XtraPrinting.BarCode namespace and renamed to BarCodeGeneratorBase, UPCEGeneratorBase, UPCSupplementalNGeneratorBase.
  • All classes that implement searching in the Print Control have been moved from XtraReports to XtraPrinting, and are now located in the XtraPrinting.Native.Navigation namespace.
  • XRPictureBox now doesn't clone its image when a report needs to render boxes with the same images in them. If the image is disposed, an exception is raised.
  • XRPageInfo control now draws its Format property value if its PageInfo property is set to None (like with PageInfoBrick in the XtraPrinting Library).
  • The HtmlItemCreated event now fires for each empty area inside an XRPanel.

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.