Tech Articles


Dynamic Runtime DataWindow Group Creation


Here’s a DataWindow tip…and a half.

Unless you want to dynamically build a DataWindow object from scratch at runtime (it’s do-able…but quite involved), there’s no direct way to create a group for a DataWindow object in an ad hoc manner. Here’s a workaround.

First, insert a computed field in an extant DataWindow object and give it an expression that’s an empty string. For the sake of this tip the computed field’s name will be “dynamicgroup”.

image

 

 

 

 

 

 

 

 

Then create a group based on this computed field.

Image

 

 

 

 

 

 

 

 

 

 

image

 

 

 

 

 

 

 

Format the DataWindow object according to your needs and save.

Now at runtime, modify the computed field’s expression to have the value of the column name by which you wish to group the result set.

dw_employees.setredraw( FALSE )

dw_employees.Modify(“dynamicgroup.Expression='” + as_coltogroup + “‘” )

dw_employees.setsort( as_coltogroup + ” A”)

dw_employees.sort( )

dw_employees.groupcalc( )

dw_employees.setredraw( TRUE )

After calling SetSort() and Sort() to sort by the column on which you’re grouping, don’t forget to call GroupCalc() to recalculate the breaks in the groupings.

Certainly this technique may be adapted to implement more than one grouping level. For those of you who maintain and enhance frameworks, the sample code fragment can certainly be made more generic as far as the reference to the DataWindow control and to the name of the computed field(s).

OK, here’s the half (.5) tip.

You’ve defaulted the value of the computed field’s expression to an empty string. This will work fine for grouping on columns of type string. However, for columns of other data types, you’ll need to invoke the DataWindow expression function String() to convert the non-string columns’ values to strings in order for the runtime modification to have the desired effect. Here’s how the accommodation appears in the sample code from earlier in this tip…

dw_employees.Modify(“dynamicgroup.Expression=’String(” + as_coltogroup + “)'” )

Comments (0)
There are no comments posted here yet

Find Articles by Tag

Class SqlModelMapper OrcaScript WebBrowser CoderObject Filter Authentication Import JSON UI License Transaction Mobile OLE Encoding Resize OAuth DragDrop DevOps PostgreSQL ODBC driver SqlExecutor JSON Open Source .NET Std Framework REST Export TreeView API .NET DataStore Event Handler Sort Repository Oracle File Database Table TFS PowerBuilder (Appeon) TortoiseGit Windows 10 Icons Git Charts Interface Database Painter SOAP Script PBNI PowerServer Mobile Automated Testing Error Messagging Validation Service iOS MessageBox JSONParser Text Web Service Proxy Windows OS C# InfoMaker Stored Procedure Linux OS Excel .NET Assembly Database Window Event GhostScript Database Object WinAPI TLS/SSL Installation Branch & Merge Testing SDK Migration Source Code Application PDF PowerBuilder Database Table Data Icon Export JSON Expression HTTPClient Import Bug Model BLOB DataWindow JSON Graph COM XML PostgreSQL Authorization Database Profile IDE ActiveX RibbonBar Builder Event Handling Platform 32-bit DataType Debugger Source Control PowerScript (PS) SnapDevelop Performance PowerBuilder Compiler UI Modernization NativePDF Outlook SQL Database Table Schema Syntax External Functions Visual Studio RESTClient Azure Web API RibbonBar Jenkins Debug PFC Elevate Conference Variable Menu Android Array SVN Trial Debugging PowerServer Web ODBC UI Themes SnapObjects Design Deployment SQL Server Encryption PBDOM DLL PBVM DataWindow CI/CD JSONGenerator Data PDFlib Configuration 64-bit CrypterObject RichTextEdit Control OAuth 2.0 Database Connection