cellEditor

Specifies a rule for defining and highlighting an editable area of data cells.

Data Sources

All, except SAP BW

Syntax

<blox:cellEditor
     index="cellEditorNumber"
     scope="scope" >
</blox:cellEditor>

where:

Attribute Required? Description
scope Yes The cells to which the editor should be applied, specified as a series of dimension and member sets enclosed in braces. Use unique names to ensure the right member is found. In Essbase, using display names will not work if DataBlox useAliases is set to false (users can set this through the user interface). For MSAS and Alphablox Cube Server data sources, use unique names starting with the cube name to ensure the correct member at the correct level is found.

The scope applies to all axes of the result set, not just the row and column axes. Specify the scope as follows:

scope="{d0:m00[,m01,... m0n]} {d1:m10[,m11,...m1n]}..."
where d0 denotes a dimension and m00 denotes a member within that dimension. For example, for Essbase:
scope="{Product:Coke} {Scenario: Actual, Budget}"
For MSAS and Alphablox Cube Server:
scope="{[My Cube].[Product]:[Code]} 
{[My Cube].[Scenario]:[Actual],[Budget]}"
  • Enclose dimension names and member names in brackets, starting from the cube name. For example, "[My Cube].[Market].[West].[California]".
  • If the member name is not enclosed in brackets, it will be treated as a member whose name is all uppercase.
Member search functions are available for specifying the level of members the editor should be applied to:
  • Leaf(): the leaf-level descendants of the specified member. Only one member can be specified in the function. Example: scope="{Market:leaf(East)}" (Essbase)
  • Child(): the children of the specified member. Only one member can be specified in the function. Example: scope="{Market:child(East)}" (Essbase)
  • Descendants(): all descendants of the specified member. Only one member can be specified in the function. Example: scope="{[My Cube].[Market]:descendants([East])}" (MSAS)
  • Gen(): all members of the specified generation. Example: scope="{Market:gen(2)}" (Essbase)
  • Not(): members to which the cell editor should not be applied. You can specify multiple members, separated by a comma. Example: scope="{[My Cube].[Market]:not([East], [West])}" (MSAS)
The function names are case-insensitive. You can combine the functions in the scope statement.
index No Note: This attribute is only valid as a cellEditor tag attribute. For the setcellEditor Java™ method, use the id argument instead.

The number of the cell editor to define. If you do not specify this attribute, the next available cell editor number is used. For example, if cell editors 1-4 are already defined, cell editor 5 is used.

Usage

Use the scope attribute to define areas of editable cells in the grid.

To activate cell editors you must set writebackEnabled to true.

You can make non-numeric cells to be editable on the grid user interface. However, non-numeric values are written back as missing values. Unlike Hyperion Essbase, which only allows writeback of numeric values, Microsoft® Analysis Services allows writeback of any data type. Care should be taken when specifying the scope so non-numeric cells are not overwritten with the "#MISSING" string. With relational data sources, Alphablox does not perform data writeback. You need to programmatically get the list of changed cells and their new values and write back the values using JDBC. The benefit of this approach is that you can write back non-numeric data.

Cell alert formatting takes precedence over cell editor formatting when a grid first appears. Once a cell is edited, cell editor color settings take precedence over those specified by cell alerts.

Examples

<blox:cellEditor
     index="3"
     scope="scope={[My Cube].[Market]: [East]}" />

The following example sets cell editor 2 on a grid displayed in a PresentBlox. Any values within the Market dimension except those for the Central member are editable.

<blox:present id="myPresent" >
   <blox:data bloxRef="aPreDefinedDataBlox" />
   <blox:grid>
      <blox:cellEditor
         index="2"
         scope="scope={[My Cube].[Market]:not([Central])" />
   </blox:grid>
</blox:present>
Related reference
cellAlert
cellFormat
cellLink
writebackEnabled