Displaying DataWindow objects as HTML forms

The GenerateHTMLForm method creates HTML form syntax for DataWindow objects. You can create an HTML form that displays a specified number of columns for a specified number of rows. Note the following:

Presentation styles

Although the GenerateHTMLForm method generates syntax for all presentation styles, the only styles that create usable forms are Freeform and Tabular.

The following HTML page shows a freeform DataWindow object converted into a form using syntax generated by the GenerateHTMLForm method:

A sample Internet Explorer browser window displays a form that contains three text input elements that are labeled employee I D, Last Name, and First Name, and three radio input elements for indicating status. They are labeled Active, Terminated, and On Leave, and the Active button is selected.

Edit style conversion

The GenerateHTMLForm method converts column edit styles into the appropriate HTML elements:

Table 2-12: HTML elements generated for column edit styles

Column edit style

HTML element

CheckBox

Input element specifying TYPE=CHECKBOX

DropDownDataWindow

Select element with a single Option element

DropDownListBox

Select element with one Option element for each item in the DropDownListBox

Edit

Input element specifying TYPE=TEXT

RadioButton

Input element specifying TYPE=RADIO

Generating syntax

To generate HTML form syntax, you call the GenerateHTMLForm method:

instancename.GenerateHTMLForm ( syntax, style, action { , startrow, 			     endrow, startcolumn, endcolumn { , buffer } } )

The method places the Form element syntax into the syntax argument and the HTML style sheet into the style argument, both of which are passed by reference.

NoteStatic texts in freeform DataWindow objects All static texts in the detail band are passed through to the generated HTML form syntax. If you limit the number of columns to be converted using the startcolumn and endcolumn arguments, remove the headers from the detail band for the columns you eliminate.

Here is an example of the GenerateHTMLForm method:

String   ls_syntax, ls_style, ls_action
String   ls_html
Integer li_return
ls_action =  &
		"/cgi-bin/pbcgi60.exe/myapp/uo_webtest/f_emplist"
li_return = ds_1.GenerateHTMLForm  &
		(ls_syntax, ls_style, ls_action)
IF li_return = -1 THEN
		MessageBox("HTML", "GenerateHTMLForm failed")
ELSE
		// of_MakeHTMLPage is an object method,
		// described in the next section.
		ls_html = this.of_MakeHTMLPage  &
			(ls_syntax, ls_style) 
END IF

After calling the GenerateHTMLForm method, the ls_syntax variable contains a Form element. Here is an example:

<FORM ACTION=
		"/cgi-bin/pbcgi60.exe/myapp/uo_webtest/f_emplist" 
		METHOD=POST>
<P>
<P><FONT CLASS=2>Employee ID:</FONT>
<INPUT TYPE=TEXT NAME="emp_id_1" VALUE="501">

<P><FONT CLASS=2>Last Name:</FONT>
<INPUT TYPE=TEXT NAME="emp_lname_1" MAXLENGTH=20 VALUE="Scott">

<P><FONT CLASS=2>First Name:</FONT>
<INPUT TYPE=TEXT NAME="emp_fname_1" MAXLENGTH=20 VALUE="David">

<P><FONT CLASS=2>Status:</FONT>
<INPUT TYPE="RADIO" NAME="status_1" CHECKED CLASS=5 ><FONT CLASS=5 >Active

<P>
<INPUT TYPE="RADIO" NAME="status_1" CLASS=5 >
<FONT CLASS=5 >Terminated

<P>
<INPUT TYPE="RADIO" NAME="status_1" CLASS=5 >
<FONT CLASS=5 >On Leave
<P>
<P>
<BR>
<INPUT TYPE=SUBMIT NAME=SAMPLE VALUE="OK">
</FORM>

The ls_stylesheet variable from the previous example contains a Style element, an example of which is shown below:

<STYLE TYPE="text/css">
<!--
.2{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:9pt "Arial", sans-serif;TEXT-DECORATION:none}

.3{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none}

.5{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none}
-->
</STYLE>

NoteUnique element names The GenerateHTMLForm method creates unique names for all elements in the form (even when displaying multiple rows in one form) by adding a _nextsequentialnumber suffix.

Creating an HTML page

To use the syntax and style sheet returned by the GenerateHTMLForm method, you must write code to merge them into an HTML page. A complete HTML page requires <HTML> and <BODY> elements to contain the style sheet and syntax.

One way to do this is to create a global or object function that returns a complete HTML page, taking as arguments the Form and Style elements generated by the GenerateHTMLForm method. Such a function might contain the following code:

// Function Name: of_MakeHTMLPage
// Arguments: String as_syntax, String as_style
// Returns: String
//***********************************
String    ls_html
IF as_syntax = "" THEN
		RETURN ""
END IF

IF as_style = "" THEN
		RETURN ""
END IF

ls_html = "<HTML>"
ls_html += as_style
ls_html += "<BODY>"
ls_html += "<H1>Employee Information</H1>"
ls_html += as_syntax
ls_html += "</BODY></HTML>"
RETURN ls_html