Pre-General Availability: 2018-9-20

Widget: grid

QuickNav

grid

A jQuery UI widget that implements a navigable data grid that supports selection and editing. It follows the DHTML Style Guide and WAI-ARIA design pattern for a grid box with these differences:

  • In row selection mode the Shift and Ctrl modifiers work like a list control. In cell selection mode discontinuous ranges are not supported so Shift-F8 is not supported.
  • Ctrl+Home/End is not supported.
  • In edit/actionable mode you can tab out of the grid at the beginning or end.

The markup expected by this widget is simply an empty <div>. The grid displays and optionally edits data stored in an APEX data model. If the grid is editable then the grid <div> must be proceeded or followed by a <div> with class u-vh (to visually hide the contents) that contains each of the rendered column items. Each column item needs to be wrapped in a <div> with class a-GV-columnItem. The markup looks like this:

    <div class="u-vh" aria-hidden="true">
       <div class="a-GV-columnItem">column item markup goes here</div>
       ...
   </div>

Only a single cell at a time is edited. The grid moves the column item in and out of the cells as needed. Grid widget functional CSS takes care of hiding the column items off screen.

Editing

The grid can be editable or not editable. This is controlled by the grid#editable option. If not editable then no UI is provided to do any editing, however it will still respond to any changes to the model data. When the grid is editable it has two modes; navigation mode and editing mode. The distinction is mainly for the purpose of keyboard behavior. In navigation mode keyboard keys move among the grid cells. In editing mode most keys are passed through to the edit controls. Edit mode pertains to cell editing only. Other kinds of edits such as deleting rows is possible as long as the grid is editable. The grid#editable option can be changed after the grid is created provided the necessary column items are available on the page. See the model documentation for how it can be used to provide fine grained control over what kinds of edits are allowed. The column definition can specify columns that are read-only. For a cell to be editable the grid must be editable, the row must be editable (as determined by the model), the column configuration must include property elementId and property readonly must not be true and the cell field metadata must not have a checksum (ck) property.

Column Edit Items:
When the grid is editable and a column can be edited, it is a column item that does the editing. Column items are essentially the same as page items except they edit a column value rather than a page item. See grid#columns option property elementId.

Selection

The grid supports both row and cell range selection. For row selection the grid supports either single or multiple selection. Rows can be selected even for grids that are not editable. For multiple selection standard keyboard modifiers Shift and Ctrl are always supported. In addition the grid#rowHeaderCheckbox option allows for checkbox style selection behavior. If the user is interacting with touch the row header checkbox will be enabled automatically. Column heading, column group heading, aggregate, and control break rows are never included in the selection.

Context Menus

The grid has easy integration with the menu widget to provide context menu support. The grid#contextMenu option is used to provide a menu widget options object. When the contextMenu option is used the menu#event:beforeOpen event/callback ui argument has these additional properties:

  • menuElement: The menu jQuery object.
  • grid: This grid jQuery object.
  • selection: A jQuery object with the selected rows at the time the menu was opened.
  • selectedRecords: An array of the selected model records at the time the menu was opened. Only if grid#selectCells is false.
  • selectedRange: The range information returned by grid#getSelectedRange. Only if grid#selectCells is true.

Also the menu#event:afterClose event/callback will automatically focus the grid if the menu action didn't take the focus and the ui argument has these additional properties:

  • menuElement: The menu jQuery object.
  • grid: This grid jQuery object.

If using the contextMenu option the grid#contextMenuId option can be used to give the menu element an ID. This is useful if other code must refer to the menu element or widget.

You can reference an already existing menu widget by specifying the grid#contextMenuId in place of the grid#contextMenu option.

If for any reason you don't want to use the menu widget, the grid#contextMenuAction option allows you to respond to mouse or keyboard interactions that typically result in a context menu. Specifically Right Mouse click (via contextmenu event), Shift-F10 key (via keydown event) and the Windows context menu key (via contextmenu event). The original event is passed to the grid#contextMenuAction function. The event object can be used to position the menu. If you implement your own menu it is best if you put focus back on the grid using the grid#focus method when the menu closes (unless the menu action directs focus elsewhere).

Only one of grid#contextMenuAction and grid#contextMenu or grid#contextMenuId can be specified. The grid#contextMenu and grid#contextMenuId options can only be set when the grid is initialized and it can't be changed. The grid#contextMenuAction cannot be set if the grid#contextMenu or grid#contextMenuId options were given when the grid was created.

Keyboard End User Information

KeyAction
F2, Enter In navigation mode and focus is on a cell, enters edit mode.
Escape In edit mode, exits edit mode and returns to navigation mode.
Up Arrow In navigation mode moves to the cell in the same column of the previous row.
Down Arrow In navigation mode moves to the cell in the same column of the next row.
Left Arrow In navigation mode or when focus is on a column header, moves to the previous cell in the row.
Right Arrow In navigation mode or when focus is on a column header, moves to the next cell in the row.
Home In navigation mode or when focus is on a column header, moves to the first cell in the row.
End In navigation mode or when focus is on a column header, moves to the last cell in the row.
Page Up In navigation mode moves focus up one visible page of rows staying in the same column.
Page Down In navigation mode moves focus down one visible page of rows staying in the same column.
Enter, Space When focus is in a column header cell, activates the column header.
Shift+Enter In edit mode moves to the cell in the same column of the previous row.
Enter In edit mode moves to the cell in the same column of the next row.
Shift+Tab In edit mode moves to the previous cell. If foucs is in the first cell of the first row it will go to the previous tab stop before the grid. In navigation mode moves focus out of the grid to the previous tab stop before the grid.
Tab In edit mode moves to the next cell. If focus is in the last cell of the last row it will go to the next tab stop after the grid or if option grid#autoAddRecord is true it will insert a new row. In navigation mode moves focus out of the grid to the next tab stop after the grid. The next tab stop may be in the grid footer.
Insert In navigation mode inserts a new record after the current focused row.
Delete In navigation mode deletes the currently selected rows.
Alt+F1 In navigation mode display help on the current column if there is any.
Ctrl+A In navigation mode selects all rows if allowed.
Alt+Up Arrow With focus in column header cell will sort ascending by that column. Adding the Shift key modifier will add the column to the existing sorted columns.
Alt+Down Arrow With focus in column header cell will sort descending by that column. Adding the Shift key modifier will add the column to the existing sorted columns.
Ctrl+Left Arrow With focus in column header cell will decrease the width of the column.
Ctrl+Right Arrow With focus in column header cell will increase the width of the column.
Shift+Left Arrow With focus in column header or group header cell will move the column or group to the left.
Shift+Right Arrow With focus in column header or group header cell will move the column or group to the right.

In navigation mode the Ctrl and Shift keys modify how the arrow keys and Space key affect the selection. In row selection mode with multiple selection the Shift key extends the selection to include the new row. The Ctrl key moves focus without changing the selection. The Space key add the currently focused row to the selection. Ctrl+Space will toggle selection for the current row. In cell range selection mode the Shift key extends the selection to include the new cell.

Initializer

$(".selector").grid(options)

Creates a grid widget.
Parameters:
Name Type Description
options Object A map of option-value pairs to set on the widget.
Since:
  • 5.1
Example

This example creates a very simple non-editable grid with just two columns; Id and Name. Only the required options are given; all others will have their default value. The element with id myGrid is an empty div.

var fieldDefinitions = {
    id: {
        index: 0,
        heading: "Id",
        seq: "1"
    },
    name: {
        index: 1,
        heading: "Name",
        seq: "2"
    }
};
var data = [
    ["1022", "Betty"],
    ["1023", "James"],
    ...
];
apex.model.create( "myModel", {
    recordIsArray: true,
    fields: fieldDefinitions
}, data );
$( "#myGrid" ).grid( {
    modelName: "myModel",
    columns: [  fieldDefinitions ]
} );

Extends

Options

aggregateLabels :Object

Map of aggregate name to object with aggregate label and overallLabel.
Type:
  • Object
Properties:
Name Type Description
* Object The aggregate name. The model metadata model.RecordMetadata agg property is the key to this aggregate map.
Properties
Name Type Description
label string The aggregate label.
overallLabel string The aggregate overall label.
Default Value:
  • {}
Examples

Initialize the grid with the aggregateLabels option specified.

$( ".selector" ).grid( {
    aggregateLabels: {
        SUM: {
            label: "Sum",
            overallLabel: "Overall Sum" },
        ...
    }
} );

Get or set option aggregateLabels after initialization.

// get
var value = $( ".selector" ).grid( "option", "aggregateLabels" );
// set
$( ".selector" ).grid( "option", "aggregateLabels", {...} );

aggregateTooltips :Object

Map of <aggregate name> + "|" + <aggregate column> to tooltip text.
Type:
  • Object
Properties:
Name Type Description
* string The property name is an aggregate name and column name separated with a "|" character. The value is the tooltip text.
Examples

Initialize the grid with the aggregateTooltips option specified.

$( ".selector" ).grid( {
    aggregateTooltips: {
        "AVG|SALARY": "Average Salary",
        ....
    }
} );

Get or set option aggregateTooltips after initialization.

// get
var value = $( ".selector" ).grid( "option", "aggregateTooltips" );
// set
$( ".selector" ).grid( "option", "aggregateTooltips", {...} );

allowCopy :boolean

If true the selection can be copied to the clipboard using the browsers copy event. This can only be set at initialization time.

Type:
  • boolean
Default Value:
  • true
Example

Initialize the grid with the allowCopy option specified.

$( ".selector" ).grid( {
    allowCopy: false
} );

allowDelete :boolean

Only applies if grid#editable is true. If false then can't use Delete key to delete a row. This only affects the keyboard behavior. The model determines if rows can be deleted or not.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the allowDelete option specified.

$( ".selector" ).grid( {
    allowDelete: false
} );

Get or set option allowDelete after initialization.

// get
var value = $( ".selector" ).grid( "option", "allowDelete" );
// set
$( ".selector" ).grid( "option", "allowDelete", false );

allowEditMode :boolean

Only applies if grid#editable is true. If false then can't go in or out of edit mode using mouse or keyboard.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the allowEditMode option specified.

$( ".selector" ).grid( {
    allowEditMode: false
} );

Get or set option allowEditMode after initialization.

// get
var value = $( ".selector" ).grid( "option", "allowEditMode" );
// set
$( ".selector" ).grid( "option", "allowEditMode", false );

allowInsert :boolean

Only applies if grid#editable is true. If false then can't use Insert key to add a row. This only affects the keyboard behavior. The model determines if rows can be added or not.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the allowInsert option specified.

$( ".selector" ).grid( {
    allowInsert: false
} );

Get or set option allowInsert after initialization.

// get
var value = $( ".selector" ).grid( "option", "allowInsert" );
// set
$( ".selector" ).grid( "option", "allowInsert", false );

autoAddRecord :boolean

Specifies if a new record should be automatically added when the model doesn't contain any data. If supported by the derived view a new record may be added when moving beyond the last record in the view while editing. Must only be true if the model and view are editable and the model allows adding records.

Type:
  • boolean
Inherited From:
Default Value:
  • false
Examples

Initialize the grid with the autoAddRecord option specified.

$( ".selector" ).grid( {
    autoAddRecord: true
} );

Get or set option autoAddRecord after initialization.

// get
var value = $( ".selector" ).grid( "option", "autoAddRecord" );
// set
$( ".selector" ).grid( "option", "autoAddRecord", true );

columnGroups :object

Defines the grid column heading groups if any. A grid can have multiple levels of column heading groups. Group heading cells display above and span the contiguous columns or column groups that belong to the same group. The columns or column groups in a group need not be adjacent although they often are.

Type:
  • object
Properties:
Name Type Description
* object The property name is the column group name. This name is referenced from a grid#columns groupName property or a column group definition parentGroupName property. The property values are column group definitions.
Properties
Name Type Description
heading string The text of the column header. Allows markup.
label string Same as heading but markup not allowed. Not currently used by grid.
headingAlignment string One of "start", "end", "center", "left", "right". Determines how the heading text is aligned. The default is "center".
parentGroupName string Optional name of the parent column group. This allows multiple levels of column groups.
Example

This example shows initializing the grid with "First" name and "Last" name columns that are grouped under a column heading group "Name".

$( ".selector" ).grid( {
    columns[{
        FIRST_NAME: {
            heading: "First",
            groupName: "NAME",
            ...
        },
        LAST_NAME: {
            heading: "Last",
            groupName: "NAME",
            ....
        },
        ...
    ],
    columnGroups: {
        NAME: {
            heading: "Name",
            headingAlignment: "start"
        },
        ...
    }
} );

columnSort :boolean

If true the mouse and keyboard can be used in column headings to adjust the sort order. The grid doesn't actually do any sorting. Something external to the grid must do the actual sorting by handling the grid#event:sortchange event and updating the model.

Note the sort order can still be adjusted external to the grid even if this is false.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the columnSort option specified.

$( ".selector" ).grid( {
    columnSort: false
} );

Get or set option columnSort after initialization.

// get
var value = $( ".selector" ).grid( "option", "columnSort" );
// set
$( ".selector" ).grid( "option", "columnSort", false );

columnSortMultiple :boolean

If true multiple columns can be sorted using Shift key modifier. This only applies if grid#columnSort is true.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the columnSortMultiple option specified.

$( ".selector" ).grid( {
    columnSortMultiple: false
} );

Initialize the grid with the columnSortMultiple option specified in the Interactive Grid region JavaScript Initialization Code attribute.

function( options ) {
    options.defaultGridViewOptions = {
        columnSortMultiple: false
    };
    return options;
}

Get or set option columnSortMultiple after initialization.

// get
var value = $( ".selector" ).grid( "option", "columnSortMultiple" );
// set
$( ".selector" ).grid( "option", "columnSortMultiple", false );

columns :Array.<object>

Defines the columns in the grid. These columns are also fields in the model. The value is an array of exactly one object that maps the column name to a column definition object. The properties are the column names. The property value is a column definition. Wrapping the object in an array simply keeps the widget from making a copy of the columns so that the same definition can be shared.

The same structure can be shared with the data model and a recordView widget. This option is required.

Type:
  • Array.<object>
Properties:
Name Type Description
* object The property is the column name. By convention it is the uppercase database column name. The value is an object that defines the column. All properties are optional unless specified otherwise.
Properties
Name Type Description
elementId string Column item name (id of DOM element) used to edit this column. Can omit if column or grid is not editable.
heading string The text of the column header. Allows markup.
label string The label text of the column. Does not allow markup. Used by control break headers if given otherwise heading is used. When the heading option includes markup the label option should be specified.
headingAlignment string Determines how the heading text is aligned. One of "start", "end", "center", "left", "right". Default is "center".
alignment string Determines how the cell content is aligned. One of "start", "end", "center", "left", "right". Optional with no default.
headingCssClasses string CSS classes applied to the column heading cell.
columnCssClasses string CSS classes applied to each cell in this column.
cellTemplate string An HTML template that defines the cell content. See apex.util.applyTemplate for template syntax. The substitutions are column names from this column configuration or columns from any parent models and they are replaced with data values from the current record of the model.
escape boolean If false the column value may contain trusted markup otherwise the column value is escaped.
seq number Determines the order of the column among all the others. Lower numbers come first.
width number The minimum width of the column. By default the grid may stretch column widths to make use of available space. See noStretch property.
noStretch boolean If false, the default, columns will stretch to fill available width. If true the column width will not stretch to fill available space as the grid resizes. In either case the user can still adjust the width. This stretching only applies if the total width of all columns is less than the width of the grid.
groupName string Name of column group. See grid#columnGroups and useGroupFor.
useGroupFor string If not present or if the string contains "heading" then the group given in groupName will be used. This allows the same column definition to be shared with multiple kinds of views so that the groupName is used by other views but not the grid.
canHide boolean Determines if the user is allowed to show or hide the column. If true the user can choose to hide or show the column. If false the user cannot change the hidden state. The grid only uses this property to determine if it should show a hidden column when needed such as in grid#gotoError.
hidden boolean If true the column is hidden otherwise it is shown.
readonly boolean If true the column cannot be edited. This is also used to give a visual representation for non-editable cells. Note: The model has additional criteria for when a column cell can be edited.
linkTargetColumn string The name of the column that contains the anchor href. If not given the href comes from the model field metadata url property. If there is no url property then this column cell is not a link.
linkText string Only for columns that contain a link. This is the anchor content. Allows markup. Allows substitutions just like the cellTemplate property. If not given the rendered display value of this column is used as the link content. If the display value of the cell is empty then the link URL is used. To display a link, at least one of linkTargetColumn or the model field metadata url property must must be given. Note: If the cell is editable it is always the data value of the field that is edited. So if you want to edit the link text it is best to omit linkText and use linkTargetColumn.
linkAttributes string Only for columns that contain a link. This provides additional anchor attributes. Allows substitutions just like the cellTemplate property.
isRequired boolean If true the column is indicated as required by adding is-required class to the column header. This should correspond with the required setting of the underlying editable column item.
helpid string Help id for the column. If present pressing the help key Alt+F1 will display the help text for the field.
virtual boolean If true the column is not included in copy down and fill operations.
noCopy boolean If true the column is not included in copy down and fill operations.
usedAsRowHeader boolean If true the column is an accessible row header. The value of the column is included in the description of the row for assistive technologies. Default is false.
noHeaderActivate boolean If true the column header does not support activation. Default is false.
sortDirection: string One of "asc" or "desc". Use "asc" if the data is sorted by this column ascending. Use "desc" if the data is sorted by this column descending. The value should be null, not present or undefined if the data is not sorted by this column.
sortIndex number Only applies if sortDirection is given. The order in which this column is sorted 1 = first, 2 = second, and so on.
canSort boolean If true the column can be sorted by the user. This controls if the header sort buttons are shown or if the keyboard sort keys work. The grid does not actually do the sorting. The grid#event:sortchange event/callback is fired/called to let the controller or parent widget know to do sorting by refreshing the model data.
controlBreakDirection string One of "asc" or "desc". Use "asc" if the control break data is sorted by this column ascending. Use "desc" if the control break data is sorted by this column descending. The value should be null, not present or undefined if the column is not a control break.
controlBreakIndex number The order in which this column is sorted for the purpose of control breaks. Starting at 1. Only applies if controlBreakDirection is given.
frozen boolean If true the column is frozen (does not horizontal scroll). Only the start most columns can be frozen. The last column cannot be frozen.
property string Do not specify this property. It is added automatically and the value is the column/field name.
Example

Initialize the grid with the columns option specified.

$( ".selector" ).grid( {
    columns: [ {
     NAME: {
         heading: "<em>Name</em>",
         label: "Name",
         alignment: "start",
         headingAlignment: "center",
         seq: 1,
         canHide: true,
         canSort: true,
         hidden: false,
         isRequired: true,
         escape: true,
         frozen: false,
         noStretch: false,
         noCopy: false,
         readonly: false,
         sortDirection: "asc",
         sortIndex: 1,
         width: 98
     },
     ....
 } ]
} );

contextMenu :Object

A menu widget options object use to create the context menu.

Only specify one of contextMenu or contextMenuId and contextMenuAction. If none of contextMenu, contextMenuId or contextMenuAction are specified there is no context menu.

This option cannot be set or changed after the widget is initialized.

Type:
  • Object
Default Value:
  • null
Example

Initialize the grid with the contextMenu option specified.

$( ".selector" ).grid( {
    contextMenu: {
    items:[
        { type:"action", label: "Action 1", action: function() { alert("Action 1"); } },
        { type:"action", label: "Action 2", action: function() { alert("Action 2"); } }
    ]
}
} );

contextMenuAction :function

A callback function that is called when it is time to display a context menu. function( event ) The function is responsible for showing the context menu. It is given the event that caused this callback to be called.

In most cases it is simpler and more consistent to use the contextMenu option. Only specify one of contextMenu or contextMenuId and contextMenuAction. If none of contextMenu, contextMenuId or contextMenuAction are specified there is no context menu.

Type:
  • function
Default Value:
  • null
Example

Initialize the grid with the contextMenuAction option specified.

$( ".selector" ).grid( {
    contextMenuAction: function( event ) {
    // do something to display a context menu
 }
} );

contextMenuId :string

If option contextMenu is given then this is the element id to give the context menu created. This allows other code to interact with the created context menu widget.

If option contextMenu is not given then this is the element id of an existing menu widget.

This option cannot be set or changed after the widget is initialized.

Type:
  • string
Default Value:
  • null
Example

Initialize the grid with the contextMenuId option specified.

$( ".selector" ).grid( {
    contextMenuId: "myContextMenu"
} );

editable :boolean

Determine if the view allows editing. If true the model must also allow editing but if false the model could still allow editing. If true the view data can be edited according to what the model allows. Only applies if the view supports editing.

Type:
  • boolean
Inherited From:
Default Value:
  • false
Examples

Initialize the grid with the editable option specified.

$( ".selector" ).grid( {
    editable: true
} );

Get or set option editable after initialization.

// get
var value = $( ".selector" ).grid( "option", "editable" );
// set
$( ".selector" ).grid( "option", "editable", true );

Determine if the view will include a footer to show status and pagination controls and information. If true a footer is shown at the bottom of the view. If false no footer is shown.

Type:
  • boolean
Inherited From:
Default Value:
  • true
Examples

Initialize the grid with the footer option specified.

$( ".selector" ).grid( {
    footer: false
} );

Get or set option footer after initialization.

// get
var value = $( ".selector" ).grid( "option", "footer" );
// set
$( ".selector" ).grid( "option", "footer", false );

hasSize :boolean

This affects scrolling and how any header (if the view has a header) or footer position is handled.

Set to true if the view is in a container that has a specific height defined. When hasSize is true the record content will scroll within the bounds of the region.

Set to false if the view does not have a defined height. The view height will be as large as needed to contain the view records as determined by pagination settings. The view may scroll within the browser window. Other options may control if the header (if the view has a header) or footer sticks to the window.

The container width must always be defined.

Type:
  • boolean
Inherited From:
Default Value:
  • false
Example

Initialize the grid with the hasSize option specified.

$( ".selector" ).grid( {
    hasSize: true
} );

hideDeletedRows :boolean

Determine if deleted rows (records) are removed from the view right away or shown with a visual effect to indicate they are going to be deleted. If true (and the view is editable) deleted records will not be visible, otherwise they are visible but have a visual indication that they are deleted. The actual records are not deleted on the server until the model is saved. The visual effect is determined by CSS rules and is typically strike through. See also apex.model.create onlyMarkForDelete option.

Type:
  • boolean
Inherited From:
Default Value:
  • false
Examples

Initialize the grid with the hideDeletedRows option specified.

$( ".selector" ).grid( {
    hideDeletedRows: true
} );

Get or set option hideDeletedRows after initialization.

// get
var value = $( ".selector" ).grid( "option", "hideDeletedRows" );
// set
$( ".selector" ).grid( "option", "hideDeletedRows", true );

highlights :object

Defines highlight color information for the view. Only applies to views that support highlighting. Style rules are injected into the document based on the highlight object.

The object is a mapping of highlight id to color definition.

Type:
  • object
Properties:
Name Type Description
* object A highlight ID. A unique ID for the highlight rule. The object can contain any number of highlight rules. The model record or field highlight metadata (see model.RecordMetadata) is used to associate the model data with the highlight rule. One of color or background must be given.
Properties
Name Type Attributes Description
seq number A number that defines the order of the CSS rule that is added.
row boolean If true the highlight applies to the record/row.
color string <nullable>
The foreground color. If given, must be a valid CSS color value.
background string <nullable>
The background color. If given, must be a valid CSS color value.
cssClass string <nullable>
The class name for the rule. This is the class used in the rule and given to the appropriate element in the view so that the desired highlight colors are applied. The cssClass defaults to the highlight id prefixed with "hlr_" if row is true and "hlc_" otherwise.
Inherited From:
Examples

Initialize the grid with the highlights option specified.

$( ".selector" ).grid( {
    highlights: {
        "hlid0001": {
            seq: 1,
            row: true,
            color: "#FF7755"
        },
        ...
    }
} );

Get or set option highlights after initialization.

// get
var value = $( ".selector" ).grid( "option", "highlights" );
// set
$( ".selector" ).grid( "option", "highlights", {...} );

modelName :string

Name of model that this view widget will display data from. Can include an instance as well. The model must already exist. This option is required. See apex.model.create modelId argument.

Type:
  • string
Inherited From:
Examples

Initialize the grid with the modelName option specified.

$( ".selector" ).grid( {
    modelName: [ "myModel", "1011" ]
} );

Get or set option modelName after initialization.

// get
var value = $( ".selector" ).grid( "option", "modelName" );
// set
$( ".selector" ).grid( "option", "modelName", "myModel" );

multiple :boolean

If true multiple rows can be selected otherwise only a single row can be selected.

Type:
  • boolean
Default Value:
  • false
Examples

Initialize the grid with the multiple option specified.

$( ".selector" ).grid( {
    multiple: true
} );

Get or set option multiple after initialization.

// get
var value = $( ".selector" ).grid( "option", "multiple" );
// set
$( ".selector" ).grid( "option", "multiple", true );

multipleCells :boolean

Only applies while grid#selectCells is true. If true then a range of cells can be selected otherwise only a single cell is selected. The default is to allow a range of cells to be selected.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the multipleCells option specified.

$( ".selector" ).grid( {
    multipleCells: false
} );

Get or set option multipleCells after initialization.

// get
var value = $( ".selector" ).grid( "option", "multipleCells" );
// set
$( ".selector" ).grid( "option", "multipleCells", false );

noDataMessage :string

Text to display when there is no data.

Type:
  • string
Inherited From:
Examples

Initialize the grid with the noDataMessage option specified.

$( ".selector" ).grid( {
    noDataMessage: "No employees found."
} );

Get or set option noDataMessage after initialization.

// get
var value = $( ".selector" ).grid( "option", "noDataMessage" );
// set
$( ".selector" ).grid( "option", "noDataMessage", "No records found." );

pagination :object

Pagination settings.

Type:
  • object
Properties:
Name Type Description
scroll boolean If true the scroll bar is used to page through the results a.k.a infinite scrolling or virtual paging. If false then next and previous buttons are shown. Default is false.
loadMore boolean If true show a load more button rather than auto paging. Only applies if scroll is true and the model doesn't know the total rows. Default is false.
showPageLinks boolean If true show page links between buttons. Only applies if scroll is false The model must know the total number of rows for this to be true. Default is false.
maxLinks number The maximum number of links to show when showPageLinks is true. Default is 5.
showPageSelector boolean If true show a drop down page selector between the buttons. Only applies if scroll is false. The model must know the total number of rows for this to be true. Default is false.
showRange boolean If true the range of rows/records is shown. It is shown between the buttons unless showPageLinks or showPageSelector is true. The range is shown as "X to Y" if the model doesn't know the total rows and "X to Y of Z" if the model does know the total number of rows. Default is true.
firstAndLastButtons boolean Only applies if scroll is false. If true first and last buttons are included. For this to be true the model must know the total number of rows.
Inherited From:
Examples

Initialize the grid with the pagination option specified.

$( ".selector" ).grid( {
    pagination: {
        scroll: false,
        showRange: true,
        showPageLinks: true,
        maxLinks: 6,
        firstAndLastButtons: true
    }
 
} );

Get or set option pagination after initialization.

// get
var value = $( ".selector" ).grid( "option", "pagination" );
// set
$( ".selector" ).grid( "option", "pagination", {...} );

persistSelection :boolean

If true the selection state for each row will be saved as record metadata in the model.

Type:
  • boolean
Default Value:
  • false
Examples

Initialize the grid with the persistSelection option specified.

$( ".selector" ).grid( {
    persistSelection: true
} );

Initialize the grid with the persistSelection option specified in the Interactive Grid region JavaScript Initialization Code attribute.

function( options ) {
    options.defaultGridViewOptions = {
        persistSelection: true
    };
    return options;
}

Get or set option persistSelection after initialization.

// get
var value = $( ".selector" ).grid( "option", "persistSelection" );
// set
$( ".selector" ).grid( "option", "persistSelection", true );

progressOptions :object

Options object to pass to apex.util.showSpinner. The default depends on the hasSize option.

Type:
  • object
Inherited From:
Default Value:
  • { fixed: !options.hasSize }
Examples

Initialize the grid with the progressOptions option specified.

$( ".selector" ).grid( {
    progressOptions: null
} );

Get or set option progressOptions after initialization.

// get
var value = $( ".selector" ).grid( "option", "progressOptions" );
// set
$( ".selector" ).grid( "option", "progressOptions", null );

reorderColumns :boolean

If true the mouse and keyboard can be used in column headings to reorder the columns or column groups.

Note the column order can still be changed external to the grid.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the reorderColumns option specified.

$( ".selector" ).grid( {
    reorderColumns: false
} );

Initialize the grid with the reorderColumns option specified in the Interactive Grid region JavaScript Initialization Code attribute.

function( options ) {
    options.defaultGridViewOptions = {
        reorderColumns: false
    };
    return options;
}

Get or set option reorderColumns after initialization.

// get
var value = $( ".selector" ).grid( "option", "reorderColumns" );
// set
$( ".selector" ).grid( "option", "reorderColumns", false );

resizeColumns :boolean

If true the mouse and keyboard can be used in column headings to adjust the width of columns.

Note the column widths can still be changed external to the grid.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the resizeColumns option specified.

$( ".selector" ).grid( {
    resizeColumns: false
} );

Initialize the grid with the resizeColumns option specified in the Interactive Grid region JavaScript Initialization Code attribute.

function( options ) {
    options.defaultGridViewOptions = {
        resizeColumns: false
    };
    return options;
}

Get or set option resizeColumns after initialization.

// get
var value = $( ".selector" ).grid( "option", "resizeColumns" );
// set
$( ".selector" ).grid( "option", "resizeColumns", false );

rowHeader :string

Determines the type of row selection header. One of: "none", "plain", "sequence", or "label". The row selection header is not a real column and is always frozen.

  • none: There is no selection row header.
  • plain: There is a selection row header that may contain a checkbox and state classes but nothing more.
  • sequence: The selection row header contains a row sequence number. The width can be adjusted.
  • label: The selection row header contains a label with content given by rowHeaderLabelColumn. The width can be adjusted.

When the grid is editable or when multiple selection is allowed it is a good idea to have a rowHeader but it is not enforced. A value other than "none" is required for editable grids in order to see visual indicators such as row level errors.

Type:
  • string
Default Value:
  • "none"
Examples

Initialize the grid with the rowHeader option specified.

$( ".selector" ).grid( {
    rowHeader: "plain"
} );

Get or set option rowHeader after initialization.

// get
var value = $( ".selector" ).grid( "option", "rowHeader" );
// set
$( ".selector" ).grid( "option", "rowHeader", "plain" );

rowHeaderCheckbox :boolean

If true the row selection header will contain a selection control. A checkbox if multiple selection is enabled or a radio button otherwise. If false no selection control is shown. This option is ignored if rowHeader is "none"

Type:
  • boolean
Default Value:
  • false
Examples

Initialize the grid with the rowHeaderCheckbox option specified.

$( ".selector" ).grid( {
    rowHeaderCheckbox: true
} );

Get or set option rowHeaderCheckbox after initialization.

// get
var value = $( ".selector" ).grid( "option", "rowHeaderCheckbox" );
// set
$( ".selector" ).grid( "option", "rowHeaderCheckbox", true );

rowHeaderLabelColumn :string

This is the name of a model column to take the row header label value from. The column value can include markup. This option only applies if rowHeader is "label".

Type:
  • string
Default Value:
  • null
Examples

Initialize the grid with the rowHeaderLabelColumn option specified.

$( ".selector" ).grid( {
    rowHeaderLabelColumn: "PART_NAME"
} );

Get or set option rowHeaderLabelColumn after initialization.

// get
var value = $( ".selector" ).grid( "option", "rowHeaderLabelColumn" );
// set
$( ".selector" ).grid( "option", "rowHeaderLabelColumn", "PART_NAME" );

rowHeaderWidth :number|null

Width of row selection header in pixels. Only applies if rowHeader is not "none". If null a default width is chosen based on the kind of rowHeader.

Type:
  • number | null
Default Value:
  • depends on rowHeader value
Examples

Initialize the grid with the rowHeaderWidth option specified.

$( ".selector" ).grid( {
    rowHeaderWidth: 58
} );

Get or set option rowHeaderWidth after initialization.

// get
var value = $( ".selector" ).grid( "option", "rowHeaderWidth" );
// set
$( ".selector" ).grid( "option", "rowHeaderWidth", 58 );

rowsPerPage :number|null

Determine how many rows to show in one page. Only applies if pagination.scroll is false, otherwise this value is ignored. If null this value is determined by the viewport height

Type:
  • number | null
Inherited From:
Default Value:
  • null
Examples

Initialize the grid with the rowsPerPage option specified.

$( ".selector" ).grid( {
    rowsPerPage: 50
} );

Get or set option rowsPerPage after initialization.

// get
var value = $( ".selector" ).grid( "option", "rowsPerPage" );
// set
$( ".selector" ).grid( "option", "rowsPerPage", 50 );

selectAll :boolean

Only applies when grid#multiple is true. If true then the current page/all visible rows can be selected with Ctrl+A and/or a select all checkbox if grid#rowHeaderCheckbox is true.

Note the definition of "all rows" is not currently well defined and may change in the future.

Type:
  • boolean
Default Value:
  • true
Examples

Initialize the grid with the selectAll option specified.

$( ".selector" ).grid( {
    selectAll: false
} );

Get or set option selectAll after initialization.

// get
var value = $( ".selector" ).grid( "option", "selectAll" );
// set
$( ".selector" ).grid( "option", "selectAll", false );

selectCells :boolean

When true select cells otherwise select rows. The default is to select rows.

Type:
  • boolean
Default Value:
  • false
Examples

Initialize the grid with the selectCells option specified.

$( ".selector" ).grid( {
    selectCells: true
} );

Get or set option selectCells after initialization.

// get
var value = $( ".selector" ).grid( "option", "selectCells" );
// set
$( ".selector" ).grid( "option", "selectCells", true );

selectionStatusMessageKey :string

The text message key to use for showing the number of selected rows/records in the footer. The message key must have exactly one parameter %0 which is replaced with the number of rows/records selected.

Type:
  • string
Inherited From:
Default Value:
  • "APEX.GV.SELECTION_COUNT"
Examples

Initialize the grid with the selectionStatusMessageKey option specified.

$( ".selector" ).grid( {
    selectionStatusMessageKey: "MY_SELECTION_MESSAGE"
} );

Get or set option selectionStatusMessageKey after initialization.

// get
var value = $( ".selector" ).grid( "option", "selectionStatusMessageKey" );
// set
$( ".selector" ).grid( "option", "selectionStatusMessageKey", "MY_SELECTION_MESSAGE" );

showNullAs :string

Text to display when the value is null or empty string.

Type:
  • string
Default Value:
  • "-"
Examples

Initialize the grid with the showNullAs option specified.

$( ".selector" ).grid( {
    showNullAs: "- null -"
} );

Get or set option showNullAs after initialization.

// get
var value = $( ".selector" ).grid( "option", "showNullAs" );
// set
$( ".selector" ).grid( "option", "showNullAs", "- null -" );

Determine if the footer will stick to the bottom of the page. Only applies if hasSize is false and footer is true. If false the footer will not stick to the bottom of the page. If true the footer will stick to the bottom of the page.

Type:
  • boolean
Inherited From:
Default Value:
  • false
Examples

Initialize the grid with the stickyFooter option specified.

$( ".selector" ).grid( {
    stickyFooter: true
} );

Get or set option stickyFooter after initialization.

// get
var value = $( ".selector" ).grid( "option", "stickyFooter" );
// set
$( ".selector" ).grid( "option", "stickyFooter", true );

stickyTop :boolean|function

Determine if the column header will stick to the top of the page as it scrolls.

Only applies if grid#hasSize is false. If false the column header will not stick to the page. If true or a function the column header will stick to the top of the page using the undocumented stickyWidget widget. If the value is a function then it is passed to the stickyWidget as the top option.

Type:
  • boolean | function
Default Value:
  • false
Examples

Initialize the grid with the stickyTop option specified.

$( ".selector" ).grid( {
    stickyTop: true
} );

Get or set option stickyTop after initialization.

// get
var value = $( ".selector" ).grid( "option", "stickyTop" );
// set
$( ".selector" ).grid( "option", "stickyTop", true );

tabbableCellContent :string

A jQuery selector that identifies cell content that can be a tab stop in navigation mode.

Type:
  • string
Default Value:
  • a,button

tooltip :object

A tooltip object suitable for jQuery UI tooltip widget except that the items property is not needed. It is supplied by the grid and cannot be overridden. It matches td,th. Also the open event is not available as a property. Default values are provided for tooltipClass, and show but can be overridden. The content callback function receives extra arguments: model, recordMeta, colMeta, columnDef. Tooltips are used to show errors and warnings at the row and cell level. The content function is not called if there is an error or warning message to display. If tooltip is null the error or warning message is added as a title attribute.

Type:
  • object
Examples

Initialize the grid with the tooltip option specified.

$( ".selector" ).grid( {
    tooltip: {
    content: function( callback, model, recordMeta, colMeta, columnDef ) {
        var text;
        // calculate the tooltip text
        return text;
    }
}
} );

Initialize the grid with the tooltip option specified in the Interactive Grid region JavaScript Initialization Code attribute.

function( options ) {
    options.defaultGridViewOptions = {
        tooltip: {
            content: function( callback, model, recordMeta, colMeta, columnDef ) {
                var text;
                // calculate the tooltip text
                return text;
            }
        }
    };
    return options;
}

Get or set option tooltip after initialization.

// get
var value = $( ".selector" ).grid( "option", "tooltip" );
// set
$( ".selector" ).grid( "option", "tooltip", {
    content: function( callback, model, recordMeta, colMeta, columnDef ) {
        var text;
        // calculate the tooltip text
        return text;
    }
} );

Events

activatecell

Triggered when a grid cell is activated (Enter key or double click). This event only applies to non-editable grids.

Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
cell$ jQuery The grid cell element jQuery object.
row$ jQuery The grid row jQuery object. When there are frozen columns this will contain two row elements.
Since:
  • 18.2
Examples

Initialize the grid with the activateCell callback specified:

$( ".selector" ).grid({
    activateCell: function( event, data ) {}
});

Bind an event listener to the gridactivatecell event:

$( ".selector" ).on( "gridactivatecell", function( event, data ) {} );

activatecolumnheader

Triggered when a column header is activated (Enter/Space key or click).

Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
header$ jQuery The column element jQuery object.
column object The column definition object.
Examples

Initialize the grid with the activateColumnHeader callback specified:

$( ".selector" ).grid({
    activateColumnHeader: function( event, data ) {}
});

Bind an event listener to the gridactivatecolumnheader event:

$( ".selector" ).on( "gridactivatecolumnheader", function( event, data ) {} );

activatecolumnheader

Triggered when whatever popup is opened in response to activateColumnHeader event should be closed/canceled. This happens because of another operation on the column such as dragging.

Properties:
Name Type Description
event Event jQuery event object.
Examples

Initialize the grid with the cancelColumnHeader callback specified:

$( ".selector" ).grid({
    cancelColumnHeader: function( event ) {}
});

Bind an event listener to the gridcancelcolumnheader event:

$( ".selector" ).on( "gridcancelcolumnheader", function( event ) {} );

columnreorder

Triggered when the columns have been reordered.

Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
header$ jQuery The column element jQuery object.
column object The column definition object.
newPosition string The index of the new position of the column.
oldPosition string The index of the old position of the column.
Examples

Initialize the grid with the columnReorder callback specified:

$( ".selector" ).grid({
    columnReorder: function( event, data ) {}
});

Bind an event listener to the gridcolumnreorder event:

$( ".selector" ).on( "gridcolumnreorder", function( event, data ) {} );

columnresize

Triggered when a column width has been changed.

Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
header$ jQuery The column element jQuery object.
column object The column definition object.
width string The new width in pixels.
Examples

Initialize the grid with the columnResize callback specified:

$( ".selector" ).grid({
    columnResize: function( event, data ) {}
});

Bind an event listener to the gridcolumnresize event:

$( ".selector" ).on( "gridcolumnresize", function( event, data ) {} );

modechange

Triggered when the edit mode changes.

Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
editMode boolean The new edit mode.
Examples

Initialize the grid with the modeChange callback specified:

$( ".selector" ).grid({
    modeChange: function( event, data ) {}
});

Bind an event listener to the gridmodechange event:

$( ".selector" ).on( "gridmodechange", function( event, data ) {} );

pagechange

Triggered when there is a pagination event that results in new records being displayed.
Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
offset number the offset of the first record in the page.
count number the number of records in the page that were added to the view.
Examples

Initialize the grid with the pageChange callback specified:

$( ".selector" ).grid({
    pageChange: function( event, data ) {}
});

Bind an event listener to the gridpagechange event:

$( ".selector" ).on( "gridpagechange", function( event, data ) {} );

selectionchange

Triggered when the selection state changes. It has no additional data.

Properties:
Name Type Description
event Event jQuery event object.
Examples

Initialize the grid with the selectionChange callback specified:

$( ".selector" ).grid({
    selectionChange: function( event ) {}
});

Bind an event listener to the gridselectionchange event:

$( ".selector" ).on( "gridselectionchange", function( event ) {} );

sortchange

Triggered when the sort direction changes. This does not actually sort the data or ask the model to sort or fetch new data. It is expected that a handler will call grid#refreshColumns and then take action that causes the data to be sorted.

Properties:
Name Type Description
event Event jQuery event object.
data Object Additional data for the event.
Properties
Name Type Description
header$ jQuery The column element jQuery object.
column object The column definition object.
direction string One of "asc" or "desc"
action string One of "add", "remove", or "change".
Examples

Initialize the grid with the sortChange callback specified:

$( ".selector" ).grid({
    sortChange: function( event, data ) {}
});

Bind an event listener to the gridsortchange event:

$( ".selector" ).on( "gridsortchange", function( event, data ) {} );

Methods

copyDownSelection(pColumnsopt, pCallbackopt)

Copies cell values from columns in the first selected row to all the other selected rows within the same columns. If pColumns is given only cells in the specified columns are copied down. Only cells that can be written will be copied to. If the selection mode is row selection, only visible columns that don't have noCopy column property equal true are copied.

Parameters:
Name Type Attributes Description
pColumns array <optional>
An optional array of column names to copy down. The columns must be in the selection, visible, and writable.
pCallback function <optional>
A no argument function that is called when the copy down operation is complete.

debugCellEdit(pValue)

This method is for developer debugging only. When developing an item plug-in that is to be used in a grid cell it can be difficult to debug CSS styling because as soon as the cell looses focus the item is moved in the DOM to a hidden area. Calling this with a true argument to turn on cell edit debugging leaves the item in the cell after it looses focus so that the DOM and styles can be inspected with browser developer tools. This is not effective for end user use. Because the cell is not fully deactivated it can affect editing in general. Call it again with false to turn off cell edit debugging or refresh the page.

Parameters:
Name Type Description
pValue boolean Set to true to debug. Keeps cells from fully deactivating when they loose focus. Set to false when done.
Example

This example shows how to debug a column item plug-in. From the browser JavaScript console:

var view$ = ... // this is the grid widget jQuery object.
view$.grid("debugCellEdit", true)
// do your debugging
view$.grid("debugCellEdit", false)

fillSelection(pFillValue, pColumnsopt, pCallbackopt)

Fills all cells in the current selection with the value pFillValue. If pColumns is given only cells in the specified columns are filled. Only cells that can be written will be filled. If the selection mode is row selection, only visible columns that don't have noCopy column property equal true are filled.

Parameters:
Name Type Attributes Description
pFillValue string The value to fill cells with.
pColumns array <optional>
An optional array of column names to fill. The columns must be in the selection, visible, and writable.
pCallback function <optional>
A no argument function that is called when the fill operation is complete.

firstPage() → {boolean}

Display the first page of records. If option pagination.scroll is true simply scrolls to the top of the viewport and a new page of records is added if needed. If pagination.scroll is false and not already on the first page the view is refreshed and shows the first page.

Inherited From:
Returns:
true for success, false if a page is currently being rendered.
Type
boolean
Example

This example goes to the first page.

$( ".selector" ).grid( "firstPage" );

focus()

Give focus to the grid. Focus is given to the last element that had focus.

Example

This example focuses the grid.

$( ".selector" ).grid( "focus" );

freezeColumn(pColumn)

Freeze the given column. Also calls grid#refreshColumns and will render the whole grid. See also grid#unfreezeColumn.
Parameters:
Name Type Description
pColumn string | Object Column name or column definition object of the column to freeze.
Examples

This example freezes column "NAME".

$( ".selector" ).grid( "freezeColumn", "NAME" );

This example freezes the third column. It passes in a column definition object.

var columns = $( ".selector" ).grid( "getColumns" );
$( ".selector" ).grid( "freezeColumn", columns[3] );

getActiveCellFromColumnItem(pItem) → {jQuery|null}

Given a column item return the grid cell for that column item in the current active row. If pItem is not a column item or if there is no active row return null.
Parameters:
Name Type Description
pItem Element The column item.
Returns:
Cell corresponding to pItem or null if there is no active row cell for pItem.
Type
jQuery | null

getActiveRecord() → {model.Record}

Returns the active record or null if there is no active record. The active record is the one currently being edited.

Inherited From:
Returns:
Active record.
Type
model.Record

getActiveRecordId() → {string}

Returns the identity of the active record or null if there is no active record. The active record is the one currently being edited.

Inherited From:
Returns:
Active record id.
Type
string

getColumns() → {Array}

Get the column definitions in order.

Returns:
Array of column definition objects.
Type
Array
Example

See grid#unfreezeColumn and @link grid#refreshColumns} for examples.

getRecords(pRows) → {Array}

Given an array of jQuery row objects return the underlying data model records. The return value from grid#getSelection is an appropriate value for pRows. However it need not contain tr elements from both the frozen and un-frozen areas.

Parameters:
Name Type Description
pRows Array.<jQuery> Array of jQuery objects representing grid rows.
Returns:
array of records from the model corresponding to the grid rows
Type
Array

getSelectedRange() → {Object}

Returns the selected cell range or null if there are no cells selected. For this method to work the option grid#selectCells must be true. The object returned has these properties:

Properties:
Name Type Description
columns Array An array of column names one for each selected column. The column name is null for the row header pseudo column.
recordIds Array An array of record ids one for each selected row.
values Array.<Array> An array of rows. Each row is an array of column values.
Returns:
Information about the range of selected cells or null if no cells selected.
Type
Object
Example

This example logs the selected range to the console.

var i, j, text,
    range = $( ".selector" ).grid( "getSelectedRange" );
text = "id"
for ( j = 0; j < range.columns.length; j++ ) {
        text += ", " + range.columns[j];
}
console.log( text );
for ( i = 0; i < range.values.length; i++ ) {
    text = range.recordIds[i];
    for ( j = 0; j < range.values[i].length; j++ ) {
        text += ", " + range.values[i][j];
    }
    console.log( text );
}

getSelectedRecords() → {Array}

Return the underlying data model records corresponding to the current selection. If option grid#selectCells is true this returns an empty array.

Note: If option grid#persistSelection is true then the selected records could span multiple pages and getSelectedRecords returns a different selection from grid#getSelection which can only return elements from the current page. To get just the records that correspond to getSelection when this option is true use:
$( ".selector" ).grid( "getRecords", $( ".selector" ).grid("getSelection") );

Returns:
Array of records from the model corresponding to the selected grid rows.
Type
Array
Example

This example gets the selected records.

var records = $( ".selector" ).grid( "getSelectedRecords" );

getSelection() → {Array}

Return the current selection. The return value depends on the grid#selectCells option.

If selectCells is true, return the current selected range as an array of rows. Each row is a jQuery object containing the selected column cells.

If selectCells is false, return the currently selected rows as an array of jQuery objects each item in the array is a row. When there are frozen columns (or even just a frozen row header) each jQuery item in the array contains two tr elements. One for the frozen columns and one for the non-frozen columns.

Returns:
Array of jQuery row objects.
Type
Array
Examples

The following example processes a row selection (selectCells is false).

var i, rows = $( "#mygrid" ).grid( "getSelection" );
for ( i = 0; i < rows.length; i++ ) {
    // note rows[i].length === 2 if there are frozen columns and 1 otherwise
    rows[i].addClass("foo"); // this adds a class to both tr elements in the case where there are frozen columns
    rows[i].children().each(function() {
        // do something with each column
    }
}

The following example processes a cell range selection (selectCells is true).

var i, rows = $( "#mygrid" ).grid( "getSelection" );
for ( i = 0; i < rows.length; i++ ) {
    // note rows[i].length is the number of columns in the range selection.
    rows[i].addClass("foo"); // this adds a class to all cells in the selected columns of this row
    rows[i].each(function() {
        // do something with each column cell
    }
}

gotoCell(pRecordId, pColumnopt)

Put focus in the cell given by pRecordId and pColumn. This is used to focus rows or cells that have errors. This will scroll or change pages as needed to focus the cell. The record must be in the model. The row containing the cell is selected. If pColumn is null then the first column is focused which may be the row selection header.

Parameters:
Name Type Attributes Description
pRecordId string The record id of the row to go to.
pColumn string <optional>
The Column name in the record row to go to.

gotoPage(pPageNumber) → {boolean}

Go to the specified page number. This should only be used when pagination.scroll is false and the model knows the total number of records.

Parameters:
Name Type Description
pPageNumber zero based page number
Inherited From:
Returns:
true for success, false if a page is currently being rendered.
Type
boolean

hideColumn(pColumn)

Hide the given column. Also calls grid#refreshColumns and will render the whole grid. See also grid#showColumn.
Parameters:
Name Type Description
pColumn string | Object Column name or column definition object to hide.
Example

This example hides column "NAME".

$( ".selector" ).grid( "hideColumn", "NAME" );

inEditMode() → {boolean}

Determine if grid is in edit mode rather than navigation mode. See also grid#setEditMode.
Returns:
true if in edit mode and false otherwise.
Type
boolean
Example

This example logs a message if the grid is in edit mode.

if ( $( ".selector" ).grid( "inEditMode" ) ) {
    console.log("In edit mode");
}

lastPage() → {boolean}

Display the last page of records. If pagination.scroll is true simply scrolls to the bottom of the viewport and a new page of records is added if needed. If pagination.scroll is false and not already on the last page the view is refreshed and shows the last page. This method only works correctly if the model knows the total number of rows.

Inherited From:
Returns:
true for success, false if a page is currently being rendered.
Type
boolean
Example

This example goes to the last page.

$( ".selector" ).grid( "lastPage" );

loadMore() → {boolean}

Load more records into the view. If pagination.scroll is true this adds a new page of records to the end. If pagination.scroll is false this is the same as nextPage. This is intended to be used when pagination.loadMore is true.

Inherited From:
Returns:
true for success, false if a page is currently being rendered.
Type
boolean

lockActive()

Call to lock the active row while async processing is in progress.

The view edits one row/record at a time. This is known as the active row. In edit mode as the user changes the focused cell with the mouse, tab or enter keys if the new cell is on a different row the previous row is deactivated and the new row is activated. Any dynamic actions or other code that manipulates Column items are acting on the active row. If any actions are asynchronous such as using Ajax to set a column item value then the row must not be deactivated while the async action is in progress otherwise the result would be applied to the wrong row!

So this method must be called before starting an async operation. It can be called multiple times if there are multiple async operations. For each call to lockActive there must be exactly one call to unlockActive. See also See tableModelViewBase#unlockActive

If the view is part of an APEX region plugin, that region should implement the beforeAsync and afterAsync functions on the object returned from region#getSessionState by calling lockActive and unlockActive respectively. Then if an appropriate target option is passed to apex.server.plugin then the locking will be done automatically. Dynamic Actions that act on column items pass the correct target option. The bottom line is that for Dynamic Actions on columns of an Interactive Grid these lock/unlock methods are called automatically.

Inherited From:
Example

See grid#setActiveRecordValue for an example.

moveColumn(pColumn, pNewPosition)

Move the given column to the new position. Column positions are zero based. Also calls grid#refreshColumns and will render the whole grid. Triggers grid#event:columnreorder event.
Parameters:
Name Type Description
pColumn string | Object The column name or column definition object to move.
pNewPosition number index into the array returned by grid#getColumns where the column will be moved to.
Example

This example moves the "NAME" column to be the third column.

$( ".selector" ).grid( "moveColumn", "NAME", 2 );

moveColumnGroup(pLevel, pOriginalPosition, pNewPosition)

Move a column group from one position to another. This moves all the columns associated with the group to the new position. Triggers grid#event:columnreorder event for each column moved.
Parameters:
Name Type Description
pLevel number The level (starting with zero as the top most level) of the group.
pOriginalPosition number Original position of the column group
pNewPosition number New position of the column group

nextPage() → {boolean}

Display the next page of records. If pagination.scroll is true the viewport scrolls down one page and records are added if needed. If pagination.scroll is false and not on the last page refresh the view to show the next page.

Inherited From:
Returns:
true for success, false if a page is currently being rendered.
Type
boolean
Example

This example goes to the next page.

$( ".selector" ).grid( "nextPage" );

previousPage() → {boolean}

Display the previous page of records. If pagination.scroll is true the viewport scrolls up one page and records are added if needed. If pagination.scroll is false and not on the first page refresh the view to show the previous page.

Inherited From:
Returns:
true for success, false if a page is currently being rendered.
Type
boolean
Example

This example goes to the previous page.

$( ".selector" ).grid( "previousPage" );

refresh(pFocusopt)

Refreshes the grid with data from the model. This method is rarely needed because it is called automatically when the model changes, widget options change, or when pagination or column related methods are called.

Parameters:
Name Type Attributes Description
pFocus boolean <optional>
if true put focus in the grid, if false don't. If undefined/omitted maintain focus if the grid already has focus.

refreshColumns()

Let the grid know that column metadata has changed so that the next time it is refreshed columns will be rendered. Call this method after any column metadata has changed external to this widget. Refresh must be called after this but typically this happens due to the model refresh notification.
Example

This example sets the minimum width of all columns to 100 and then refreshes the columns and refresh the grid.

$( ".selector" ).grid( "getColumns" ).forEach( function( c ) { c.width = 100; } );
$( ".selector" ).grid( "refreshColumns" )
    .grid( "refresh" );

resize()

Call this method anytime the container that the grid is in changes its size. For better performance it is best to call this after the size has changed not continuously while it is changing.

selectAll(pFocusopt, pNoNotifyopt)

Select all rows. This has no effect if the grid#multiple or grid#selectAll(1) options are not true. This only applies to the current page or what has been rendered so far.
Parameters:
Name Type Attributes Description
pFocus boolean <optional>
If true the first cell of the selection is given focus.
pNoNotify boolean <optional>
If true the selection change event will be suppressed.

setActiveRecordValue(pColumn)

Use after a column item value is set without triggering a change event to update the model and grid view. Has no effect if there is no active record.

When a dynamic action or other event handler on a change event updates the value of the same item that triggered the change event, the change event from setting the value should be suppressed to avoid an infinite loop. However the model is only updated from a change event. This method offers a solution to the model not being updated if the value is set asynchronously. Call this method anytime a column item is updated and the change event is suppressed.

Parameters:
Name Type Description
pColumn string The name of the column.
Inherited From:
Example

This example updates the "SALARY" column, which has static id "C_SALARY", in interactive grid with static id "MyGrid", to add 10 to whatever the user enters. setTimeout is used to simulate an async value update. The active row must be locked around the async update.

var salary = apex.item( "C_SALARY" );
$( salary.node ).change( function( event ) {
    // assume the current view is grid and not single row view.
    var grid$ = apex.region( "MyGrid" ).call( "getCurrentView" ).view$;
    grid$.grid("lockActive");
    setTimeout( function() {
        // suppress this change otherwise this handler will be triggered again
        salary.setValue( parseFloat( salary.getValue() ) + 10, null, true );
        // suppressing the value means the grid model is not updated so call setActiveRecordValue
        grid$.grid( "setActiveRecordValue", "SALARY" )
            .grid( "unlockActive" );
    }, 10 ):
} );

setColumnWidth(pColumn, pWidth)

Sets the width of the given column. Triggers grid#event:columnresize event.
Parameters:
Name Type Description
pColumn string | Object The column name or column definition object to set the width on.
pWidth number The width in pixels to set the column too.

setEditMode(pEditMode)

Set the current edit mode. Should only be used if the grid is editable. Triggers grid#event:modechange event.
Parameters:
Name Type Description
pEditMode boolean If true enter edit mode. If false enter navigation mode.
Example

This example enters edit mode.

$( ".selector" ).grid( "setEditMode", true ) );

setSelectedRecords(pRecords, pFocusopt, pNoNotifyopt) → {integer}

Select the grid rows that correspond to the given data model records. Depending on pagination the records may not actually be in view or rendered at this time even if they exist in the underlying data model or on the server. Triggers the grid#event:selectionchange event unless pNoNotify is true.
Parameters:
Name Type Attributes Description
pRecords Array.<model.Record> An array of data model records to select.
pFocus boolean <optional>
If true the first cell of the selection is given focus.
pNoNotify boolean <optional>
If true the selection change event will be suppressed.
Returns:
Count of the rows actually selected or -1 if called before the grid data is initialized or if grid#selectCells option is true.
Type
integer

setSelection(pRows, pFocusopt, pNoNotifyopt)

Set the selected rows of the grid. Triggers the grid#event:selectionchange event unless pNoNotify is true.
Parameters:
Name Type Attributes Description
pRows Array An array of jQuery row objects such as the return value of grid#getSelection or a jQuery object containing one or more rows (tr elements) or columns (td elements) from this grid.
pFocus boolean <optional>
If true the first cell (in pRows) of the selection is given focus.
pNoNotify boolean <optional>
if true the selection change event will be suppressed.
Example

This example selects the third row of the first grid widget on the page.

$(".a-GV").first().grid( "setSelection", [$(".a-GV").first().find( ".a-GV-w-scroll .a-GV-row" ).eq(3)] );

showColumn(pColumn)

Show the given column. Also calls grid#refreshColumns and will render the whole grid. See also grid#hideColumn.
Parameters:
Name Type Description
pColumn string | Object Column name or column definition object to show.
Example

This example shows column "NAME".

$( ".selector" ).grid( "showColumn", "NAME" );

unfreezeColumn(pColumn)

Unfreeze the given column. Also calls grid#refreshColumns and will render the whole grid. See also grid#freezeColumn.
Parameters:
Name Type Description
pColumn string | Object column name or column definition object of the column to unfreeze.
Example

This example unfreezes column "NAME".

$( ".selector" ).grid( "unfreezeColumn", "NAME" );

unlockActive()

Call to unlock the active row after async processing is complete.

Call after the async operation completes. See tableModelViewBase#lockActive for more information.

Inherited From:
Example

See grid#setActiveRecordValue for an example.