Generating HTML
You can use the data in a DataWindow object to create HyperText
Markup Language (HTML) syntax. Once the HTML has been created, you
can display it in a Web browser.

This section does not include description of the Web DataWindow.
The Web DataWindow uses DataWindow object properties that are described
in detail in the DataWindow Reference. For
overview information, see the “Web DataWindow properties”.
Techniques you can use
You can use any of several techniques to generate HTML from
a DataWindow object.
In a painter
In both the DataWindow painter and the Output view in the Database
painter, you can save retrieved data in HTML format. To do this
in the DataWindow painter, select File>Save Rows As from
the menu. In the Database painter, open the Output view, then select
Rows>Save Rows As from the menu. In both painters, specify
HTML Table as the format for the file.
In your application code
You can obtain an HTML string of the DataWindow presentation
and data from the Data.HTMLTable property. You can save the string
in a variable and modify the HTML with string manipulation operations.
In PowerBuilder, you can also use the FileOpen and FileWrite functions
to save the HTML to a file.
The HTMLTable property has its own properties which you can
set to control the HTML attributes and style sheet associated with
the Table HTML element.
PowerBuilder only
In PowerBuilder, there are two more techniques available to
you. You can:
-
Call the SaveAs
method to save the contents of a DataWindow directly to a file on
disk. To save the data in HTML format, you need to specify HTMLTable
as the file type when you call SaveAs. -
Call the GenerateHTMLForm method to create an HTML
form from data contained in a DataWindow control or DataStore whose
DataWindow object uses the Freeform or Tabular presentation style.
Choosing presentation styles
Some DataWindow presentation styles translate better into
HTML than others. The following presentation styles produce good
results:
-
Tabular
-
Group
-
TreeView
-
Freeform
-
Crosstab
-
Grid
The Composite, Graph, RichText, and OLE 2.0 presentation styles
produce HTML output that is based on the result only, and not on
the presentation style. DataWindows that have overlapping controls
might not produce the expected results. Nested reports are ignored;
they are not included in the generated HTML.
Example
This example illustrates how you might use DataWindow-generated
HTML in an application.
The key line of code gets the HTML from the DataWindow by
referring to its HTMLTable property. Variations for each environment
are shown below. In PowerBuilder, you can use the Describe method
or a property expression. The Web ActiveX has to use Describe.
PowerBuilder
1 |
ls_htmlstring = dw_1.Object.DataWindow.Data.HTMLTable |
Web ActiveX
1 |
str_html = dw_1.Describe("DataWindow.Data.HTMLTable"); |
The complete example that follows is implemented in PowerBuilder.
The window below displays customer data in a tabular DataWindow
object. By pressing the Browse button, the user can translate the
contents of the DataWindow object into HTML format and invoke a
Web browser to view the HTML output. By pressing the Select Browser
button, the user can tell the application which Web browser to use:

Script for the Select Browser button
The script for the Select Browser button displays a dialog
box where the user can select an executable file for a Web browser.
The path to the executable is stored in is_Browser, which
is an instance variable defined on the window:
1 |
String ls_BrowserName |
1 |
Integer li_Result |
1 |
1 |
// Open the dialog to select a browser. |
1 |
li_Result = GetFileOpenName("Select Browser", & |
1 |
is_Browser, ls_BrowserName, & |
1 |
"exe", "Executable Files (*.EXE),*.EXE") |
1 |
1 |
IF li_Result = -1 THEN |
1 |
MessageBox("No Browser", "No Browser selected") |
1 |
END IF |
Script for the Browse button
The script for the Browse button creates an HTML string from
the data in the DataWindow by assigning the Data.HTMLTable property
to a string variable. After constructing the HTML string, the script
adds a header to the HTML string. Then the script saves the HTML
to a file and runs the Web browser to display the output.
1 |
String ls_HTML, ls_FileName, ls_BrowserPath |
1 |
Integer li_FileNumber, li_Bytes, |
1 |
Integer li_RunResult, li_Result |
1 |
1 |
// Generate the HTML. |
1 |
ls_HTML = dw_1.Object.DataWindow.Data.HTMLTable |
1 |
IF IsNull(ls_HTML) Or Len(ls_HTML) <= 1 THEN |
1 |
MessageBox ("Error", "Error generating HTML!") |
1 |
Return |
1 |
ELSE |
1 |
ls_HTML ="<H1>HTML Generated From a DataWindow"& |
1 |
+ "</H1><P>" + ls_HTML |
1 |
END IF |
1 |
1 |
//Create the file. |
1 |
ls_FileName = "custlist.htm" |
1 |
li_FileNumber = FileOpen(ls_FileName, StreamMode!, & |
1 |
Write!, LockReadWrite!, Replace! ) |
1 |
1 |
IF (li_FileNumber >= 0) THEN |
1 |
li_Bytes = FileWrite(li_FileNumber, ls_HTML) |
1 |
FileClose(li_FileNumber) |
1 |
IF li_Bytes = Len(ls_HTML) THEN |
1 |
// Run Browser with the HTML file. |
1 |
IF Not FileExists(is_Browser) THEN |
1 |
cb_selbrowser.Trigger Event Clicked() |
1 |
IF NOT FileExists(is_Browser) THEN |
1 |
MessageBox("Select Browser", "Could & |
1 |
not find the browser.") |
1 |
RETURN |
1 |
END IF |
1 |
END IF |
1 |
li_RunResult = Run(is_Browser + " file:///"+& |
1 |
ls_FileName) |
1 |
IF li_RunResult = -1 THEN |
1 |
MessageBox("Error", "Error running browser!") |
1 |
END IF |
1 |
ELSE |
1 |
MessageBox ("Write Error", & |
1 |
"File Write Unsuccessful") |
1 |
END IF |
1 |
ELSE |
1 |
MessageBox ("File Error", "Could not open file") |
1 |
END IF |