Siebel Tools Reference > Physical UI Navigation and Templates > Applet Templates >

Persistently Editable List Applets


Edit List applets are shown in a persistently editable mode in views that use high interactivity. The purpose of an editable list applet is to allow users to modify the records in a list applet without switching to an edit page.

The editable list applet has the following features:

Edit List mode renders list applets persistently editable. A list applet that is rendered in this mode can still be shown in the Edit mode by invoking the EditRecord method. Typically, the Edit List mode is used for editing the most commonly updated fields, and the Edit mode is used to edit the record.

A given list applet exhibits different behavior and appears differently depending on whether it is part of a view being displayed using standard or high interactivity:

To show list applets in Edit List mode

  1. Add new controls for the applet that are required to support Editable Lists.
  2. The editable list applets will be rendered in a view with the currently selected row showing editable fields as data entry (as opposed to read-only) controls. Users can change the values of these fields and then use a Save control to commit the changes to the database. To update another row, the user has to select that row, upon which the fields in the previously selected row return to read-only status and the fields in the newly selected row change to data entry controls. To obtain this behavior, the following two controls should be added to the list applet.

  3. Mark the list columns that you want to edit in the list applet.
  4. By default, all list columns in the list applet are editable in the Edit List mode if the business component allows updates to the field and if the Read Only property of the list column is not set to FALSE. However, having all columns editable is not recommended. Only the fields that would require frequent updates should be shown as editable. You still must provide an Edit Record link to edit all the fields in the record. To mark which columns in the list applet should not be editable when rendering the applet as an editable list, set the property HTML List Edit of the list column to FALSE (The default is TRUE).

  5. Set the template to be used for rendering the applet in the Edit List mode.
  6. In Tools, add a new Applet Web Template for the list applet, where the Type property is set to Edit List, and the Web Template is set to the template to be used for rendering the applet in this mode. Add the two controls mentioned above as Applet Web Template Items for this template.

    NOTE:  For an applet showing the Edit List mode, you do not need to specify a Base type template since the applet is never shown in the base mode. Also, you can share the same Web Template object between list applets in the Base and Edit List modes.

  7. Map the list applet to the view template in the Edit List mode.
  8. The View Web Template Item has a property called Applet Mode, which is used to specify the mode to be used for the applet when rendering the view. The default value is Base. To make the list applet editable in the view, set the value of this property to Edit List when mapping the applet in the View Web Template.

Sample List Applet Template

<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">

<swe:form>

...

<swe:list>

<!-- List Header Section Start>

<swe:control id="147">

<td class="Header" align="center">

<swe:this property="DisplayName"/>

</td>

</swe:control>

<swe:select-row>

<td width="42" align="center" class="Header">&nbsp;

</td>

</swe:select-row>

<swe:for-each startValue="501" count="20" iteratorName="currentId">

<swe:control id="swe:currentId">

<td align="swe:this.TextAlignment" class="Header">

<swe:this property="ListHeader"/>

</td>

</swe:control>

</swe:for-each>

<swe:control id="142">

<td class="Header" align="center">

<swe:this property="DisplayName"/>

</td>

</swe:control>

<!-- List Header Section End>

<!------------ Loop for all 7 records, List Body ------------->

<swe:for-each-row count="7">

<tr class="swe:this.RowStyle">

<swe:control id="147">

<td width="42" align="center" class="Row">

<swe:this property="FormattedHtml" hintMapType="Control"/>

</td>

</swe:control>

<swe:select-row>

<td width="42" align="center" class="Row">

<swe:this property="FormattedHtml" />

</td>

</swe:select-row>

<!-- ---------- List Field Values (501-520) ------------->

<swe:for-each startValue="501" count="40" iteratorName="currentId">

<swe:control id="swe:currentId">

<td align="swe:this.TextAlignment" class="Row">

<swe:this property="FormattedHtml"

hintText="Field"/>

</td>

</swe:control>

</swe:for-each>

<!-- ---------- Per-record Control Buttons ------------->

<swe:control id="142">

<td align="center" class="Row">

<swe:this property="FormattedHtml" hintMapType="Control"/>

</td>

</swe:control>

</tr>

</swe:for-each-row>

<!-- ---------- End Loop, List Body ------------->

</swe:list>

...

</swe:form>

</table>

Tags that typically appear in a list applet template include swe:form, swe:list, swe:control, swe:select-row, and swe:for-each-row.

Current Record Selection in List Applets

The Web client has a feature that allows users to select a record as the currently active record in a list applet in the Base and the Edit List modes.

NOTE:  This applies only to standard interactivity applications. For high interactivity applications, row selection is achieved by clicking anywhere within the current row.

To select a record as the currently active record

  1. Add a control to all list applets that invokes the method PositionOnRow.
  2. The HTML Row Sensitive property of this method should be set to TRUE.
  3. Place this control on the list applet where you want the link to select the row. You are able to select the record by clicking on this link.

SWE provides two options to show the currently selected record. These options can be used together or individually:

  1. You are able to specify the formatting to be used for the currently selected row.
  2. This feature is based on changing the CSS style sheet class associated with a row (for example in a <TR> tag) to specify different formatting information. You can associate a list applet with a named style to be used for formatting its rows. You can define this attribute in the cfg file used by the application under the SWE section. (This is currently limited to all list applets used by an application so they have the same row formatting style.)

    ListRowStyle = "Siebel List"

    You can specify any name for the row style. The actual style sheet classes used by this named style is specified in a new file type called the Siebel Web Style file (similar to the Siebel Web Format file used for custom html types). The Siebel Web Style files (SWS files) will have the extension .sws, and should be installed in the same folder as the template files.

    As in the case of the SWF files, the SWS files used by an application are specified in the .cfg file of the application. There are two parameters that define the SWS file. One defines the file defined by the Siebel application teams and the other the file that can be defined by customers to either override the styles specified by the application teams or to add new styles. The parameters should be defined in the SWE section of the cfg file.

    SystemSWSName = CCStyles.sws

    ;UserSWSName = // for customer use only

    In the SWS file you can define the style sheet classes to be used with a named style using two new SWE tags and conditional tags like <swe:if> or <swe:switch>. These tags are described as follows:

  1. You can use the PositionOnRow control itself to distinguish between the selected and the unselected rows. Once a row is selected, the PositionOnRow control on that row will be in a disabled state. So you can use different images for the disabled and enabled state of the control to differentiate between selected and unselected rows.

Multi-Row Editable List Applets

This is an extension to the Editable List Applet capability. By default when an applet is rendered in the Edit List mode in a view, only the currently selected row is editable. To edit other rows, you need to save the current changes and then select the next row to edit.

It is also possible to render list applets in Edit List mode where all the rows are editable. Users can update multiple rows and then save all the records with one invocation of the SaveEditRecord control.

To make a list applet support multi-row edits in Edit List mode, set the HTML Multi Row Edit property of the List object in tools to TRUE. The default for this attribute is FALSE. All the other steps are the same as for the regular Edit List mode.

NOTE:  You do not need to place the SaveEditRecord control on each row. Only one such control is required for the applet.

There are certain limitations around the usage of this feature:

Because of these limitations, this feature should be used only in cases where these limitations will not cause a significant impact on the application's usability.

Hence this feature should be used only when the following conditions are met:

A good example of the use of this feature is to update the Quantity field in the Shopping Cart applet.

NOTE:  This feature is specific to standard interactivity applications. Applications that use high interactivity commit implicitly as you navigate between rows of a list applet. You can edit any row of a list applet, and as you proceed these changes will be committed to the database.

Multi-Record Select List Applets

Multi-select list applets provide a way to select multiple items for a transaction. The check boxes in the left column are used to select the items. The Select All button allows the user to select all available records in the list. The Select action button selects all of the records that have been chosen for inclusion in the selection.

This feature is specific to standard interactivity applications. In applications that use high interactivity, multi-row selection is available in all list applets rendered using the <swe:list> tag, except for pick applets. In the rendered applets, multiple rows can be selected using the Control/Shift keys, as in any standard Windows application

The Siebel Web Engine supports the selection of multiple records in list applets for invoking methods that act on these selected records. With the HTML Client the selection of rows is done using check boxes that are placed on each row.

This is different from positioning the current record using the PositionOnRow control. You can have both the PositionOnRow control and Multiple Row Selection on the same list applet.

When you initially navigate to a list applet, the record on which the bus comp is positioned is automatically selected. Users can unselect this using the check box if desired. Unlike PositionOnRow, when you select rows using the check box there is no server round trip. The selected records are marked as selected on the bus comp only when a method is invoked on the applet. You can select records across multiple pages (that is, you can navigate using the Next and Previous controls and select records from different working sets).

By default, multirecord selection is not enabled for list applets. To enable this feature on list applets where this needs to be supported, set the new attribute of the List object in Tools called HTML Multi Row Select to TRUE.

To render the check boxes to select multiple rows in list applet templates, the tag <swe:select-row> is used. The syntax of this tag is:

<swe:select-row property="FormattedHtml" />

or

<swe:select-row>

<swe:this property="FormattedHtml" />

</swe:select-row>

When the property attribute is set to FormattedHtml in either the <swe:select-row> or <swe:this> tag, the check box will be rendered if the applet is enabled for multirecord selection in Tools. When <swe:select-row> tag is used without the property attribute, it acts as a conditional tag to show its body if the applet is enabled for multirecord selection.

By using this tag, you can create a generic list applet template that can be used with list applets that support multi-record selection and those that do not. In the list header, use the <swe:select-row> tag conditionally to put in a <td> for the header for the row selection check box column, and in the list body use the <swe:select-row> tag along with the <swe:this> tag conditionally to put in a <td> that contains the check box.

NOTE:  You must place your list applet controls/list columns within a <swe:form> tag when you enable the multi-select feature, as any invoke method on the applet requires the form which contains the row selection check boxes to be submitted.

Controls that do not support invoking methods when multiple records are selected are not disabled when the user selects multiple records since there is no server call when selecting multiple records. Instead, when the control is activated a message will be shown to the user that the action cannot be performed when multiple records are selected


 Siebel Tools Reference, Version 7.5, Rev. A 
 Published: 18 April 2003