Next was Buck Woolley's "Advanced DataWindow Presentation Techniques for PowerBuilder, PocketBuilder and DataWindow.Net". Buck has a rather slow and even method of presenting, but what he was presenting was so stunning that the attendees were ooing and aweing all the same. His stuff really needs to be seen to be believed. Even Reed Shilts (of PocketBuilder fame) who was sitting next to me was on the edge of his seat. Buck has samples at his www.dw-extreme.com web site.

Finally, I sat it on the second of Dave Avera's "The State of the DataWindow and Plans for its Future" sessions. Dave talked about where the DataWindow had come from and where it was at presently. Some of the information was new even to me. For example, in one of my PBDJ articles on DataWindow.Net, I noted that the Modify and SetProperty methods of the DataWindow took RGB values for colors, whereas the .Net system colors are all ARGB colors. What Dave noted is that many of the color properties are directly exposed as properties, and can be set directly using .Net ARGB values. Another example is the ValueInRow method for the ExpressionBasedProperty class, which is the equivalent of doing a Describe ( Evaluate ..., but a whole lot easier to implement.

Dave then talked about DataWindow futures, including:

JavaServer Faces (JSF) DataWindow, which will be introduced in Workspace in a later version. It is currently being developed as a JNI wrapper around the current DataWindow control (so that bug fixes and enhancements do not have to be continually ported). So far it has been tested on Tomcat, Sun Application Server and EAServer. And although the primary focus is on supporting JDBC drivers, the native drivers have been tested as well.

PowerBuilder 10.5 additions: He discussed the TreeView format and the drop down calendar edit style, which I've discussed previously. He did go into more depth on their plans for ADO.Net DataTable support. They are planning two methods of support:

Bind Model
When the DataWindow is bound to the underlying DataAdapter DataTable the data is immediatly copied to the DataWindow, and any changes to the data in the DataWindow are automatically applied to the DataTable. Updates are then handled through the standard DataAdapter methods. One downside of this approach is that, at least currently, some DataWindow methods are not supported (particularly Sort and Filter).

Retrieve/Update Model
After the DataWindow is associated to the DataTable, but the data is not copied into the DataWindow until the Retrieve method is used. Similarily, the data in the DataTable is not updated until the DataWindow Update method is called. With this model, all DataWindow methods (including Sort and Filter) are supported. As with the Bind approach, the actual update of the underlying database tables is accomplished through the DataAdapter.

Dave mentioned that they are also planning to add support for indexed access to DataWindow buffers to DataWindow.Net.

Farther in the future, Dave indicated they are considering a Master/Detail DataWindow and are planning on integrating the DataWindow Designer into the VS.Net IDE.

Finally, Dave had an "off-the-record" discussion of ideas they have in mind for the DataWindow even farther out. Unfortunately, since they were "off-the-record", I can't report on them here.

Dave then took questions from the audience. I asked him about:

Better XML import support (such as importing into nested DataWindow and not requiring a column to be visible on the surface of the DataWindow before it could be used in an XML template). In addition, being able to create a DataWindow from a WSDL or XSD, so that we didn't have to manually create an external DataWindow for XML import from a web service.

I also asked about providing a method to DataWindow.Net that would more directly indicate whether or not a column in the result set also had a control on the surface of the DataWindow. If you are writing generic services for the DataWindow control and want to mass manipulate DataWindow column control attributes, you currently have to check the .Band attribute for the column first. If it returns "?", it means there is no associated control on the surface of the DataWindow. So while it's possible, it's not entirely intuitive.

About Me

Bruce Armstrong is a development lead with Integrated Data Services (IDS). Prior to joining IDS 14 years ago, he was an independent consultant for 15 years doing PowerBuilder development for companies such as Rockwell, Hughes, Boeing, Western Asset Management, Investment Technology Group and Johnson & Johnson. He has been using PowerBuilder since version 1.0.B. He was a charter member of TeamSybase (formerly TeamPS), a PowerBuilder MVP, an SAP Mentor and now and Appeon MVP. 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. He has contributed numerous articles to the PowerBuilder Developer's Journal (PBDJ) and the ISUG Tech Journal. He served as the editor-in-chief of PBDJ from 2004 to 2013 and served for a while as a technical editor for the ISUG Tech Journal. He has done sessions on PowerBuilder at most TechWaves, SAP TechEd and Appeon Elevate conferences since 2004, at local user group meetings in Columbia, Germany, Belgium, Switzerland, England, Italy and France and numerous webcasts.