PowerBuilder Authors: Chris Pollach, Yeshim Deniz, Jayaram Krishnaswamy, Kevin Benedict, Avi Rosenthal

Related Topics: PowerBuilder

PowerBuilder: Article

DataWindow.NET TreeView DataWindow Presentation Style

A powerful way to present and maintain data

One of the first things you'll notice when you open up the File->New->DataWindow dialog in DataWindow Designer 2.0 is the new TreeView DataWindow presentation style (see Figure 1). Once you've double-clicked on that, you'll see the same series of dialogs that you're already familiar with from the other presentation styles in which you select the data source, the tables to use, the columns in the tables, etc.

That is, it will be familiar until after you've finished defining the SELECT statement. Once you leave that, you encounter a new Report Definition dialog (see Figure 2). Here you indicate whether you want the TreeView DataWindow to be a Grid Style or not and which columns from the SQL statement should be associated with the first level on the TreeView. You can add other levels to the TreeView after it has been created, similar to the way you create additional group breaks in a group DataWindow (see Figure 3).

For the purposes of walking through the implementation of a TreeView presentation style DataWindow, we're going to use the DEPARTMENT and EMPLOYEE tables from the EAServer demo database supplied with PowerBuilder. The SQL statement we'll end up using is shown in Listing 1.

The result is shown in Figure 4. That figure also shows the new TreeView properties for the DataWindow. You'll notice that I have opened and closed folder icons for the TreeView items. Those aren't provided by default. Instead, check the "Use Tree Node Icon" on the DataWindow, and then specify the icons you want to use for each band in the "Expanded Tree Node Icon File" and "Collapsed Tree Note Icon File" for each group band (see Figure 4) or as the "Tree Node Icon File" on the detail band. The display of lines between the child elements are controlled by the "Connect Leaf Nodes" property. If the "Show Lines" option is turned off, no lines will show, including both the lines between child elements and the lines from the root to the first level items. The "Expand to Level by Default" shows how far down the TreeView the items are already expanded when the DataWindow is first retrieved. The "Indent Value" determines how far the icon is from the +/- characters and the "State Icon Align Mode" value.

There are a couple of items to note about the TreeView presentation style. A native TreeView control allows only a single text label for the nodes. With the TreeView DataWindow presentation style, you can provide many columns of detail information, each with its own edit mask, and each of which the user can update. And, like most other DataWindow presentation styles, the TreeView DataWindow is updateable!

The Grid form of the TreeView presentation style (the one show here) also allows for column headers and column resize and movement - much like the standard Grid DataWindow presentation style. In a way, it's like a cross between a TreeView and a ListView. The non-grid version also allows for column headers, but column resizing and movement is not permitted (more like a tabular DataWindow presentation style). The non-grid version is a bit better if you want to display multiple columns of information in a non-detail band because it won't attempt to force the columns to fit the confines of the detail column layout. However, as with group DataWindows, you can't set a tab order in a non-detail band of the DataWindow. Therefore, the data in any band other than the detail band is not directly editable by the user. As with a group DataWindow, there is a header and trailer band for each level, a header and footer band for the entire DataWindow, as well as a footer band.

It's hard to find a native control to compare the new TreeView presentation style with. It offers a significant functional capability over the Treeview WinForm class. The TreeView presentation style allows for multiple columns of data for each node. It also allows for editing of the data and various editing masks that can be applied to the data. In addition, the TreeView presentation style is also much easier to populate. A System.Windows.Forms.Treeview requires the developer to manually loop through the data to be displayed, creating a System.Windows.Forms.TreeNode object and adding it to the Nodes collection property. The grid layout of the TreeView presentation style DataWindow is somewhat similar to the System.Windows.Form.DataGridView class. However, unlike its predecessor the DataGrid, the DataGridView is not capable of displaying hierarchical data.

The DataWindowControl class has been augmented with one new property (which is really a class, so it's more like a collection of properties) (see Table 1)as well as several new methods and events to support the new presentation style (see Tables 3 and 4).

The TreeView presentation style provides a new powerful way of presenting and maintaining data that is unrivaled by any other native controls in the .NET Framework. Currently, the new presentation style is not supported in the WebDataWindowControl or for use with the .NET Compact Framework (mobile devices). In addition, the current implementation requires the retrieval of all data on the initial load, rather than delaying the loading of child data until the child is expanded. For a large data set, the latter method of operation could be a real advantage.

More Stories By Bruce Armstrong

Bruce Armstrong is a development lead with Integrated Data Services (www.get-integrated.com). A charter member of TeamSybase, he has been using PowerBuilder since version 1.0.B. He was a contributing author to SYS-CON's PowerBuilder 4.0 Secrets of the Masters and the editor of SAMs' PowerBuilder 9: Advanced Client/Server Development.

Comments (1)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.