com.smartgwt.client.widgets

## Interface DataBoundComponent

- All Superinterfaces:
    HasDragCompleteHandlers, HasDropCompleteHandlers, HasFetchDataHandlers, com.google.gwt.event.shared.HasHandlers
  All Known Implementing Classes:
    Calendar, CalendarView, ColumnTree, CubeGrid, DateGrid, DetailViewer, DynamicForm, EditTree, ListGrid, ListPalette, Menu, MenuPalette, PickListMenu, PropertySheet, RecordEditor, SearchForm, SelectionTreeMenu, TableView, TileGrid, TilePalette, Timeline, TreeGrid, TreePalette

      public interface DataBoundComponent
      extends HasFetchDataHandlers, HasDropCompleteHandlers, HasDragCompleteHandlers

  A DataBoundComponent is a widget that can configure itself for viewing or editing objects which share a certain schema by "binding" to the schema for that object (called a "DataSource").

  A schema (or DataSource) describes an object as consisting of a set of properties (or "fields").

  DataBoundComponents have a `dataSource` for dealing with binding to DataSources, `fields` the schema information provided by a DataSource, and manipulating objects or sets of object from the DataSource.

  The following visual components currently support databinding:

       DynamicForm
       DetailViewer
       ListGrid
       TreeGrid
       TileGrid
       ColumnTree
       CubeGrid

  The following non-visual components also support databinding:

       ValuesManager
       ResultSet
       ResultTree

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addFormulaField()` Convenience method to display a `com.smartgwt.client..FormulaBuilder` to create a new Formula Field.
    `void` | `addSummaryField()` Convenience method to display a `com.smartgwt.client..SummaryBuilder` to create a new Summary Field.
    `java.lang.Boolean` | `anySelected()` Whether at least one item is selected
    `void` | `deselectAllRecords()` Deselect all records
    `void` | `deselectRecord(int record)` Deselect a `Record` passed in explicitly, or by index.
    `void` | `deselectRecord(Record record)` Deselect a `Record` passed in explicitly, or by index.
    `void` | `deselectRecords(int[] records)` Deselect a list of `Record`s passed in explicitly, or by index.
    `void` | `deselectRecords(Record[] records)` Deselect a list of `Record`s passed in explicitly, or by index.
    `void` | `disableHilite(java.lang.String hiliteID)` Disable a hilite
    `void` | `disableHiliting()` Disable all hilites.
    `void` | `editHilites()` Shows a HiliteEditor interface allowing end-users to edit the data-hilites currently in use by this DataBoundComponent.
    `void` | `enableHilite(java.lang.String hiliteID)` Enable / disable a `hilites`
    `void` | `enableHilite(java.lang.String hiliteID, boolean enable)` Enable / disable a `hilites`
    `void` | `enableHiliting()` Enable all hilites.
    `void` | `enableHiliting(boolean enable)` Enable all hilites.
    `void` | `exportData()` Uses a "fetch" operation on the current `DataSource` to retrieve data that matches the current filter and sort criteria for this component, then exports the resulting data to a file or window in the requested format.
    `void` | `exportData(DSRequest requestProperties)` Uses a "fetch" operation on the current `DataSource` to retrieve data that matches the current filter and sort criteria for this component, then exports the resulting data to a file or window in the requested format.
    `void` | `fetchData()` Retrieves data from the DataSource that matches the specified criteria.
    `void` | `fetchData(Criteria criteria)` Retrieves data from the DataSource that matches the specified criteria.
    `void` | `fetchData(Criteria criteria, DSCallback callback)` Retrieves data from the DataSource that matches the specified criteria.
    `void` | `fetchData(Criteria criteria, DSCallback callback, DSRequest requestProperties)` Retrieves data from the DataSource that matches the specified criteria.
    `void` | `filterData()` Retrieves data that matches the provided criteria and displays the matching data in this component.
    `void` | `filterData(Criteria criteria)` Retrieves data that matches the provided criteria and displays the matching data in this component.
    `void` | `filterData(Criteria criteria, DSCallback callback)` Retrieves data that matches the provided criteria and displays the matching data in this component.
    `void` | `filterData(Criteria criteria, DSCallback callback, DSRequest requestProperties)` Retrieves data that matches the provided criteria and displays the matching data in this component.
    `java.lang.Boolean` | `getAddDropValues()` Indicates whether to add "drop values" to items dropped on this component, if both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key.
    `java.lang.String` | `getAddFormulaFieldText()` Text for a menu item allowing users to add a formula field
    `java.lang.String` | `getAddOperation()` `operationId` this component should use when performing add operations.
    `java.lang.String` | `getAddSummaryFieldText()` Text for a menu item allowing users to add a formula field
    `java.lang.Boolean` | `getAutoFetchAsFilter()` If `setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `fetchData()` or `filterData()`
    `java.lang.Boolean` | `getAutoFetchData()` If true, when this component is first drawn, automatically call `fetchData()` or `filterData()` depending on `getAutoFetchAsFilter()` .
    `TextMatchStyle` | `getAutoFetchTextMatchStyle()` If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `fetchData()` call.
    `java.lang.Boolean` | `getCanAddFormulaFields()` Adds an item to the header context menu allowing users to launch a dialog to define a new field based on values present in other fields, using the `com.smartgwt.client..FormulaBuilder`.
    `java.lang.Boolean` | `getCanAddSummaryFields()` Adds an item to the header context menu allowing users to launch a dialog to define a new text field that can contain both user-defined text and the formatted values present in other fields, using the `com.smartgwt.client..SummaryBuilder`.
    `com.google.gwt.core.client.JavaScriptObject` | `getDataAsJSList()`
    `FetchMode` | `getDataFetchMode()` How to fetch and manage records retrieved from the server.
    `int` | `getDataPageSize()` When using `data paging`, how many records to fetch at a time.
    `DataSource` | `getDataSource()` The DataSource that this component should bind to for default fields and for performing `DataSource requests`.
    `java.lang.Boolean` | `getDeepCloneOnEdit()` Before we start editing values in this DataBoundComponent, should we perform a deep clone of the underlying values.
    `Record[]` | `getDragData()` During a drag-and-drop interaction, this method returns the set of records being dragged out of the component.
    `DragDataAction` | `getDragDataAction()` Indicates what to do with data dragged into another DataBoundComponent.
    `java.lang.String` | `getDragTrackerStyle()` CSS Style to apply to the drag tracker when dragging occurs on this component.
    `java.util.Map` | `getDropValues()` When an item is dropped on this component, and `addDropValues` is true and both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key, this object provides the "drop values" that Smart GWT will apply to the dropped object before updating it.
    `java.lang.String` | `getDuplicateDragMessage()` Message to show when a user attempts to transfer duplicate records into this component, and `preventDuplicates` is enabled.
    `java.lang.String` | `getEditFormulaFieldText()` Text for a menu item allowing users to edit a formula field
    `java.lang.String` | `getEditSummaryFieldText()` Text for a menu item allowing users to edit the formatter for a field
    `java.lang.Boolean` | `getExportAll()` Setting exportAll to true prevents the component from passing its list of fields to the export call.
    `java.lang.String[]` | `getExportFields()` The list of field-names to export.
    `java.lang.String` | `getFetchOperation()` Operation ID this component should use when performing fetch operations.
    `Alignment[]` | `getFieldAlignments()` Returna an array of field alignments for this grid
    `int` | `getFieldCount()` Return the number of fields.
    `com.google.gwt.core.client.JavaScriptObject[]` | `getFieldsAsJavaScriptObjects()` Return the fields as JavaScriptObjects rather than as SmartGWT Java wrappers of the field class type (e.g.
    `java.lang.String` | `getHiliteProperty()` Marker that can be set on a record to flag that record as hilited.
    `Hilite[]` | `getHilites()` Return the set of hilite-objects currently applied to this DataBoundComponent.
    `java.lang.String` | `getHiliteState()` Get the current hilites encoded as a String, for saving.
    `Criteria` | `getInitialCriteria()` Criteria to use when `setAutoFetchData(Boolean)` is used.
    `com.google.gwt.core.client.JavaScriptObject` | `getOrCreateJsObj()`
    `java.lang.Boolean` | `getPreventDuplicates()` If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `transferSelectedData(com.smartgwt.client.widgets.DataBoundComponent)`.
    `int` | `getRecordIndex(Record record)` Get the index of the provided record.
    `RecordList` | `getRecordList()` Return the underlying data of this DataBoundComponent as a `RecordList`.
    `java.lang.String` | `getRemoveOperation()` `operationId` this component should use when performing remove operations.
    `ResultSet` | `getResultSet()` Return the underlying data of this DataBoundComponent as a `ResultSet`.
    `java.lang.Boolean` | `getShowComplexFields()` Whether to show fields of non-atomic types when a DataBoundComponent is given a DataSource but no `component.fields`.
    `java.lang.Boolean` | `getShowDetailFields()` Whether to show fields marked `detail:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `java.lang.Boolean` | `getShowHiddenFields()` Whether to show fields marked `hidden:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `java.lang.String` | `getTitleField()` Method to return the fieldName which represents the "title" for records in this Component. If this.titleField is explicitly specified it will always be used. Otherwise, default implementation will check `titleField` for databound components. For non databound components returns the first defined field name of `"title"`, `"name"`, or `"id"`.
    `java.lang.String` | `getTitleFieldValue(Record record)` Get the value of the titleField for the passed record
    `java.lang.String` | `getUpdateOperation()` `operationId` this component should use when performing update operations.
    `java.lang.Boolean` | `getUseAllDataSourceFields()` If true, the set of fields given by the "default binding" (see `fields`) is used, with any fields specified in `component.fields` acting as overrides that can suppress or modify the display of individual fields, without having to list the entire set of fields that should be shown.
    `java.lang.Boolean` | `getUseFlatFields()` The `useFlatFields` flag causes all simple type fields anywhere in a nested set of DataSources to be exposed as a flat list for form binding.
    `void` | `invalidateCache()` Invalidate the current data cache for this databound component via a call to the dataset's `invalidateCache()` method, for example, `ResultSet.invalidateCache()`.
    `void` | `selectAllRecords()` Select all records
    `void` | `selectRecord(int record)` Select/deselect a `Record` passed in explicitly, or by index.
    `void` | `selectRecord(int record, boolean newState)` Select/deselect a `Record` passed in explicitly, or by index.
    `void` | `selectRecord(Record record)` Select/deselect a `Record` passed in explicitly, or by index.
    `void` | `selectRecord(Record record, boolean newState)` Select/deselect a `Record` passed in explicitly, or by index.
    `void` | `selectRecords(int[] records)` Select/deselect a list of `Record`s passed in explicitly, or by index.
    `void` | `selectRecords(int[] records, boolean newState)` Select/deselect a list of `Record`s passed in explicitly, or by index.
    `void` | `selectRecords(Record[] records)` Select/deselect a list of `Record`s passed in explicitly, or by index.
    `void` | `selectRecords(Record[] records, boolean newState)` Select/deselect a list of `Record`s passed in explicitly, or by index.
    `void` | `setAddDropValues(java.lang.Boolean addDropValues)` Indicates whether to add "drop values" to items dropped on this component, if both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key.
    `void` | `setAddFormulaFieldText(java.lang.String addFormulaFieldText)` Text for a menu item allowing users to add a formula field
    `void` | `setAddOperation(java.lang.String addOperation)` `operationId` this component should use when performing add operations.
    `void` | `setAddSummaryFieldText(java.lang.String addSummaryFieldText)` Text for a menu item allowing users to add a formula field
    `void` | `setAutoFetchAsFilter(java.lang.Boolean autoFetchAsFilter)` If `setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `fetchData()` or `filterData()`
    `void` | `setAutoFetchData(java.lang.Boolean autoFetchData)` If true, when this component is first drawn, automatically call `fetchData()` or `filterData()` depending on `getAutoFetchAsFilter()` .
    `void` | `setAutoFetchTextMatchStyle(TextMatchStyle autoFetchAsFilter)` If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `fetchData()` call.
    `void` | `setCanAddFormulaFields(java.lang.Boolean canAddFormulaFields)` Adds an item to the header context menu allowing users to launch a dialog to define a new field based on values present in other fields, using the `com.smartgwt.client..FormulaBuilder`.
    `void` | `setCanAddSummaryFields(java.lang.Boolean canAddSummaryFields)` Adds an item to the header context menu allowing users to launch a dialog to define a new text field that can contain both user-defined text and the formatted values present in other fields, using the `com.smartgwt.client..SummaryBuilder`.
    `void` | `setDataFetchMode(FetchMode fetchMode)` How to fetch and manage records retrieved from the server.
    `void` | `setDataPageSize(int dataPageSize)` When using `data paging`, how many records to fetch at a time.
    `void` | `setDataSource(DataSource dataSource)` Bind to a DataSource.
    `void` | `setDataSource(java.lang.String dataSource)` Bind to a DataSource.
    `void` | `setDeepCloneOnEdit(java.lang.Boolean deepCloneOnEdit)` Before we start editing values in this DataBoundComponent, should we perform a deep clone of the underlying values.
    `void` | `setDragDataAction(DragDataAction dragDataAction)` Indicates what to do with data dragged into another DataBoundComponent.
    `void` | `setDragTrackerStyle(java.lang.String dragTrackerStyle)` CSS Style to apply to the drag tracker when dragging occurs on this component.
    `void` | `setDropValues(java.util.Map dropValues)` When an item is dropped on this component, and `addDropValues` is true and both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key, this object provides the "drop values" that Smart GWT will apply to the dropped object before updating it.
    `void` | `setDuplicateDragMessage(java.lang.String duplicateDragMessage)` Message to show when a user attempts to transfer duplicate records into this component, and `preventDuplicates` is enabled.
    `void` | `setEditFormulaFieldText(java.lang.String editFormulaFieldText)` Text for a menu item allowing users to edit a formula field
    `void` | `setEditSummaryFieldText(java.lang.String editSummaryFieldText)` Text for a menu item allowing users to edit the formatter for a field
    `void` | `setExportAll(java.lang.Boolean exportAll)` Setting exportAll to true prevents the component from passing its list of fields to the export call.
    `void` | `setExportFields(java.lang.String[] exportFields)` The list of field-names to export.
    `void` | `setFetchOperation(java.lang.String fetchOperation)` Operation ID this component should use when performing fetch operations.
    `void` | `setFields(com.google.gwt.core.client.JavaScriptObject... fields)` Field setter variant (alternative to `setFields(FormItem...)`, `setFields(ListGridField...)`, etc.) that will accept an array of JavaScriptObject, rather than an array of SmartGWT Java wrappers of the field class type (e.g.
    `void` | `setHiliteProperty(java.lang.String hiliteProperty)` Marker that can be set on a record to flag that record as hilited.
    `void` | `setHilites(Hilite[] hilites)` Accepts an array of hilite objects and applies them to this DataBoundComponent.
    `void` | `setHiliteState(java.lang.String hiliteState)` Set the current hilites based on a hiliteState String previously returned from getHilitesState.
    `void` | `setInitialCriteria(Criteria initialCriteria)` Criteria to use when `setAutoFetchData(Boolean)` is used.
    `void` | `setPreventDuplicates(java.lang.Boolean preventDuplicates)` If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `transferSelectedData(com.smartgwt.client.widgets.DataBoundComponent)`.
    `void` | `setRemoveOperation(java.lang.String removeOperation)` `operationId` this component should use when performing remove operations.
    `void` | `setShowComplexFields(java.lang.Boolean showComplexFields)` Whether to show fields of non-atomic types when a DataBoundComponent is given a DataSource but no `component.fields`.
    `void` | `setShowDetailFields(java.lang.Boolean showDetailFields)` Whether to show fields marked `detail:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `void` | `setShowHiddenFields(java.lang.Boolean showHiddenFields)` Whether to show fields marked `hidden:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `void` | `setTitleField(java.lang.String titleField)` Sets the best field to use for a user-visible title for an individual record from this component.
    `void` | `setUpdateOperation(java.lang.String updateOperation)` `operationId` this component should use when performing update operations.
    `void` | `setUseAllDataSourceFields(java.lang.Boolean useAllDataSourceFields)` If true, the set of fields given by the "default binding" (see `fields`) is used, with any fields specified in `component.fields` acting as overrides that can suppress or modify the display of individual fields, without having to list the entire set of fields that should be shown.
    `void` | `setUseFlatFields(java.lang.Boolean useFlatFields)` The `useFlatFields` flag causes all simple type fields anywhere in a nested set of DataSources to be exposed as a flat list for form binding.
    `void` | `transferSelectedData(DataBoundComponent source)` Simulates a drag / drop type transfer of the selected records in some other component to this component, without requiring any user interaction.
    `void` | `transferSelectedData(DataBoundComponent source, int index)` Simulates a drag / drop type transfer of the selected records in some other component to this component, without requiring any user interaction.

    - ### Methods inherited from interface com.smartgwt.client.widgets.events.HasFetchDataHandlers

      `addFetchDataHandler`

    - ### Methods inherited from interface com.smartgwt.client.widgets.events.HasDropCompleteHandlers

      `addDropCompleteHandler`

    - ### Methods inherited from interface com.smartgwt.client.widgets.events.HasDragCompleteHandlers

      `addDragCompleteHandler`

    - ### Methods inherited from interface com.google.gwt.event.shared.HasHandlers

      `fireEvent`

- - ### Method Detail

    - #### getOrCreateJsObj

          com.google.gwt.core.client.JavaScriptObject getOrCreateJsObj()

    - #### setDataFetchMode

          void setDataFetchMode(FetchMode fetchMode)

      How to fetch and manage records retrieved from the server. See `FetchMode`.

      This setting only applies to the `ResultSet` automatically created by calling `fetchData`. If a pre-existing ResultSet is passed to `setData()` instead, its existing setting for `fetchMode` applies.

      Parameters:
        `fetchMode` - the fetch mode

    - #### getDataFetchMode

          FetchMode getDataFetchMode()

      How to fetch and manage records retrieved from the server. See `FetchMode`.

      This setting only applies to the `ResultSet` automatically created by calling `fetchData`. If a pre-existing ResultSet is passed to `setData()` instead, its existing setting for `fetchMode` applies.

      Returns:
        the fetch mode

    - #### setDataPageSize

          void setDataPageSize(int dataPageSize)

      When using `data paging`, how many records to fetch at a time. If set to a positive integer, `dataPageSize` will override the default `resultSize` for ResultSets automatically created when you call `fetchData()` (and similarly for the `resultSize` of ResultTrees). The default of 0 means to just use the default page size of the data container.

      Note that regardless of the `dataPageSize` setting, a component will always fetch all of data that it needs to draw. Settings such as `showAllRecords:true`, `drawAllMaxCells` and `drawAheadRatio` can cause more rows than the configured `dataPageSize` to be fetched.

      Parameters:
        `dataPageSize` - dataPageSize Default value is 0
      See Also:
        `Databinding overview and related methods`

    - #### getDataPageSize

          int getDataPageSize()

      When using `data paging`, how many records to fetch at a time. If set to a positive integer, `dataPageSize` will override the default `resultSize` for ResultSets automatically created when you call `fetchData()` (and similarly for the `resultSize` of ResultTrees). The default of 0 means to just use the default page size of the data container.

      Note that regardless of the `dataPageSize` setting, a component will always fetch all of data that it needs to draw. Settings such as `showAllRecords:true`, `drawAllMaxCells` and `drawAheadRatio` can cause more rows than the configured `dataPageSize` to be fetched.

      Returns:
        int
      See Also:
        `Databinding overview and related methods`

    - #### setUseAllDataSourceFields

          void setUseAllDataSourceFields(java.lang.Boolean useAllDataSourceFields)

      If true, the set of fields given by the "default binding" (see `fields`) is used, with any fields specified in `component.fields` acting as overrides that can suppress or modify the display of individual fields, without having to list the entire set of fields that should be shown.

      If `component.fields` contains fields that are not found in the DataSource, they will be shown after the most recently referred to DataSource field. If the new fields appear first, they will be shown first.

      Parameters:
        `useAllDataSourceFields` - useAllDataSourceFields Default value is false

    - #### getUseAllDataSourceFields

          java.lang.Boolean getUseAllDataSourceFields()

      If true, the set of fields given by the "default binding" (see `fields`) is used, with any fields specified in `component.fields` acting as overrides that can suppress or modify the display of individual fields, without having to list the entire set of fields that should be shown.

      If `component.fields` contains fields that are not found in the DataSource, they will be shown after the most recently referred to DataSource field. If the new fields appear first, they will be shown first.

      Returns:
        Boolean

    - #### setShowHiddenFields

          void setShowHiddenFields(java.lang.Boolean showHiddenFields)

      Whether to show fields marked `hidden:true` when a DataBoundComponent is given a DataSource but no `component.fields`.

      The `hidden` property is used on DataSource fields to mark fields that are never of meaning to an end user.

      Parameters:
        `showHiddenFields` - showHiddenFields Default value is false

    - #### getShowHiddenFields

          java.lang.Boolean getShowHiddenFields()

      Whether to show fields marked `hidden:true` when a DataBoundComponent is given a DataSource but no `component.fields`.

      The `hidden` property is used on DataSource fields to mark fields that are never of meaning to an end user.

      Returns:
        Boolean

    - #### setShowDetailFields

          void setShowDetailFields(java.lang.Boolean showDetailFields)

      Whether to show fields marked `detail:true` when a DataBoundComponent is given a DataSource but no `component.fields`.

      The `detail` property is used on DataSource fields to mark fields that shouldn't appear by default in a view that tries to show many records in a small space.

      Parameters:
        `showDetailFields` - showDetailFields Default value is false

    - #### getShowDetailFields

          java.lang.Boolean getShowDetailFields()

      Whether to show fields marked `detail:true` when a DataBoundComponent is given a DataSource but no `component.fields`.

      The `detail` property is used on DataSource fields to mark fields that shouldn't appear by default in a view that tries to show many records in a small space.

      Returns:
        Boolean

    - #### setShowComplexFields

          void setShowComplexFields(java.lang.Boolean showComplexFields)

      Whether to show fields of non-atomic types when a DataBoundComponent is given a DataSource but no `component.fields`.

      If true, the component will show fields that declare a complex type, for example, a field 'shippingAddress' that declares type 'Address', where 'Address' is the ID of a DataSource that declares the fields of a shipping address (city, street name, etc).

      Such fields may need custom formatters or editors in order to create a usable interface, for example, an Address field in a ListGrid might use a custom formatter to combine the relevant fields of an address into one column, and might use a pop-up dialog for editing.

      Note : This is an advanced setting

      Parameters:
        `showComplexFields` - showComplexFields Default value is true

    - #### getShowComplexFields

          java.lang.Boolean getShowComplexFields()

      Whether to show fields of non-atomic types when a DataBoundComponent is given a DataSource but no `component.fields`.

      If true, the component will show fields that declare a complex type, for example, a field 'shippingAddress' that declares type 'Address', where 'Address' is the ID of a DataSource that declares the fields of a shipping address (city, street name, etc).

      Such fields may need custom formatters or editors in order to create a usable interface, for example, an Address field in a ListGrid might use a custom formatter to combine the relevant fields of an address into one column, and might use a pop-up dialog for editing.

      Returns:
        Boolean

    - #### setFetchOperation

          void setFetchOperation(java.lang.String fetchOperation)

      Operation ID this component should use when performing fetch operations.
      Parameters:
        `fetchOperation` - fetchOperation Default value is null

    - #### getFetchOperation

          java.lang.String getFetchOperation()

      Operation ID this component should use when performing fetch operations.
      Returns:
        String

    - #### setUpdateOperation

          void setUpdateOperation(java.lang.String updateOperation)

      `operationId` this component should use when performing update operations.
      Parameters:
        `updateOperation` - Default value is null
      See Also:
        `Operations overview and related methods`

    - #### getUpdateOperation

          java.lang.String getUpdateOperation()

      `operationId` this component should use when performing update operations.
      Returns:
        String
      See Also:
        `Operations overview and related methods`

    - #### setAddOperation

          void setAddOperation(java.lang.String addOperation)

      `operationId` this component should use when performing add operations.
      Parameters:
        `addOperation` - Default value is null
      See Also:
        `Operations overview and related methods`

    - #### getAddOperation

          java.lang.String getAddOperation()

      `operationId` this component should use when performing add operations.
      Returns:
        String
      See Also:
        `Operations overview and related methods`

    - #### setRemoveOperation

          void setRemoveOperation(java.lang.String removeOperation)

      `operationId` this component should use when performing remove operations.
      Parameters:
        `removeOperation` - Default value is null
      See Also:
        `Operations overview and related methods`

    - #### getRemoveOperation

          java.lang.String getRemoveOperation()

      `operationId` this component should use when performing remove operations.
      Returns:
        String
      See Also:
        `Operations overview and related methods`

    - #### setExportFields

          void setExportFields(java.lang.String[] exportFields)

      The list of field-names to export. If provided, the field-list in the exported output is limited and sorted as per the list.

      If exportFields is not provided, the exported output includes all visible fields from this component, sorted as they appear.

      Parameters:
        `exportFields` - exportFields Default value is null

    - #### getExportFields

          java.lang.String[] getExportFields()

      The list of field-names to export. If provided, the field-list in the exported output is limited and sorted as per the list.

      If exportFields is not provided, the exported output includes all visible fields from this component, sorted as they appear.

      Returns:
        the list of field-names to export.

    - #### setExportAll

          void setExportAll(java.lang.Boolean exportAll)

      Setting exportAll to true prevents the component from passing its list of fields to the export call. The result is the export of all visible fields from `fields`.

      If exportAll is false, an export operation will first consider `exportFields`, if it's set, and fall back on all visible fields from `fields` otherwise.

      Parameters:
        `exportAll` - exportAll Default value is false

    - #### getExportAll

          java.lang.Boolean getExportAll()

      Setting exportAll to true prevents the component from passing its list of fields to the export call. The result is the export of all visible fields from `fields`.

      If exportAll is false, an export operation will first consider `exportFields`, if it's set, and fall back on all visible fields from `fields` otherwise.

      Returns:
        Boolean

    - #### setPreventDuplicates

          void setPreventDuplicates(java.lang.Boolean preventDuplicates)
                             throws java.lang.IllegalStateException

      If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `transferSelectedData(com.smartgwt.client.widgets.DataBoundComponent)`. When a duplicate transfer is detected, a dialog will appear showing the `duplicateDragMessage`.

      If the component either does not have a `DataSource` or has a DataSource with no `primaryKey` declared, duplicate checking is off by default. If duplicate checking is enabled, it looks for an existing record in the dataset that has all of the properties of the dragged record, and considers that a duplicate.

      For `DragDataAction`:"copy" where the target DataSource is related to the source DataSource by foreignKey, a duplicate means that the target list, as filtered by the current criteria, already has a record whose value for the foreignKey field matches the primaryKey of the record being transferred.

      For example, consider dragging "employees" to "teams", where "teams" has a field "teams.employeeId" which is a foreignKey pointing to "employees.id", and the target grid has search criteria causing it to show all the members of one team. A duplicate - adding an employee to the same team twice - is when the target grid's dataset contains an record with "employeeId" matching the "id" field of the dropped employee.

      Parameters:
        `preventDuplicates` - preventDuplicates Default value is null
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getPreventDuplicates

          java.lang.Boolean getPreventDuplicates()

      If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `transferSelectedData(com.smartgwt.client.widgets.DataBoundComponent)`. When a duplicate transfer is detected, a dialog will appear showing the `duplicateDragMessage`.

      If the component either does not have a `DataSource` or has a DataSource with no `primaryKey` declared, duplicate checking is off by default. If duplicate checking is enabled, it looks for an existing record in the dataset that has all of the properties of the dragged record, and considers that a duplicate.

      For `DragDataAction`:"copy" where the target DataSource is related to the source DataSource by foreignKey, a duplicate means that the target list, as filtered by the current criteria, already has a record whose value for the foreignKey field matches the primaryKey of the record being transferred.

      For example, consider dragging "employees" to "teams", where "teams" has a field "teams.employeeId" which is a foreignKey pointing to "employees.id", and the target grid has search criteria causing it to show all the members of one team. A duplicate - adding an employee to the same team twice - is when the target grid's dataset contains an record with "employeeId" matching the "id" field of the dropped employee.

      Returns:
        Boolean

    - #### setDuplicateDragMessage

          void setDuplicateDragMessage(java.lang.String duplicateDragMessage)
                                throws java.lang.IllegalStateException

      Message to show when a user attempts to transfer duplicate records into this component, and `preventDuplicates` is enabled. If set to null, duplicates will not be reported and the dragged duplicates will not be saved.
      Parameters:
        `duplicateDragMessage` - duplicateDragMessage Default value is "Duplicates not allowed"
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getDuplicateDragMessage

          java.lang.String getDuplicateDragMessage()

      Message to show when a user attempts to transfer duplicate records into this component, and `preventDuplicates` is enabled. If set to null, duplicates will not be reported and the dragged duplicates will not be saved.
      Returns:
        String

    - #### setAddDropValues

          void setAddDropValues(java.lang.Boolean addDropValues)

      Indicates whether to add "drop values" to items dropped on this component, if both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key. "Drop values" are properties of the dropped item that you wish to change (and persist) as a result of the item being dropped on this grid.

      If this value is true and this component is databound, `getDropValues()` will be called for every databound item dropped on this grid, and an update performed on the item

      Parameters:
        `addDropValues` - addDropValues Default value is true

    - #### getAddDropValues

          java.lang.Boolean getAddDropValues()

      Indicates whether to add "drop values" to items dropped on this component, if both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key. "Drop values" are properties of the dropped item that you wish to change (and persist) as a result of the item being dropped on this grid.

      If this value is true and this component is databound, `getDropValues()` will be called for every databound item dropped on this grid, and an update performed on the item

      Returns:
        Boolean

    - #### setDropValues

          void setDropValues(java.util.Map dropValues)

      When an item is dropped on this component, and `addDropValues` is true and both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key, this object provides the "drop values" that Smart GWT will apply to the dropped object before updating it.

      If this property is not defined, Smart GWT defaults to returning the selection criteria currently in place for this component. Thus, any databound items (for example, rows from other grids bound to the same DataSource) dropped on the grid will, by default, be subjected to an update that makes them conform to the grid's current filter criteria.

      Note : This is an advanced setting

      Parameters:
        `dropValues` - dropValues Default value is null

    - #### getDropValues

          java.util.Map getDropValues()

      When an item is dropped on this component, and `addDropValues` is true and both the source and target widgets are databound, either to the same DataSource or to different DataSources that are related via a foreign key, this object provides the "drop values" that Smart GWT will apply to the dropped object before updating it.

      If this property is not defined, Smart GWT defaults to returning the selection criteria currently in place for this component. Thus, any databound items (for example, rows from other grids bound to the same DataSource) dropped on the grid will, by default, be subjected to an update that makes them conform to the grid's current filter criteria.

      Note : This is an advanced setting

      Returns:
        Returns the "drop values" to apply to a record dropped on this component prior to update. Only applicable to databound components - see `dropValues` for more details. If multiple records are being dropped, this method is called for each of them in turn.

        This method returns the following:

        - Nothing, if `addDropValues` is false
        - dropValues, if that property is set. If the component's criteria object is applicable (as explained in the next item), it is merged into dropValues, with properties in dropValues taking precedence.
        - The component's criteria object, if the most recent textMatchStyle for the component was "exact" and it is simple criteria (ie, not an AdvancedCriteria object)
        - Otherwise nothing

        You can override this method if you need more complex setting of drop values than can be provided by simply supplying a dropValues object.

    - #### setUseFlatFields

          void setUseFlatFields(java.lang.Boolean useFlatFields)
                         throws java.lang.IllegalStateException

      The `useFlatFields` flag causes all simple type fields anywhere in a nested set of DataSources to be exposed as a flat list for form binding.

      `useFlatFields` is typically used with imported metadata, such as `XMLTools.loadXMLSchema(java.lang.String, com.smartgwt.client.data.XSDLoadCallback)` from a `XMLTools.loadWSDL(java.lang.String, com.smartgwt.client.data.WSDLLoadCallback)`, as a means of eliminating levels of XML nesting that aren't meaningful in a user interface, without the cumbersome and fragile process of mapping form fields to XML structures.

      For example, having called `WebService.getInputDS(java.lang.String)` to retrieve the input message schema for a web service operation whose input message looks like this:

           <FindServices>
               <searchFor>search text</searchFor>
               <Options>
                   <caseSensitive>false</caseSensitive>
               </Options>
               <IncludeInSearch>
                   <serviceName>true</serviceName>
                   <documentation>true</documentation>
                   <keywords>true</keywords>
               </IncludeInSearch>
           </FindServices>

      Setting `useFlatFields` on a `DynamicForm` that is bound to this input message schema would result in 5 `FormItem` reflecting the 5 simple type fields in the message.

      For this form, the result of `DynamicForm.getValues()` might look like:

          {
              searchFor: "search text",
              caseSensitive: false,
              serviceName: true,
              documentation : true,
              keywords : true
           }

      When contacting a `WebService`, these values can be automatically mapped to the structure of the input message for a web service operation by setting `useFlatFields` (for use with `WebService.callOperation(java.lang.String, java.util.Map, java.lang.String, com.smartgwt.client.data.WebServiceCallback)`) or by setting `useFlatFields` (for use with a `DataSource` that is `'bound to a WSDL web service'` via `wsOperation`).

      Using these two facilities in conjunction (component.useFlatFields and request.useFlatFields) allows gratuitous nesting to be consistently bypassed in both the user presentation and when providing the data for XML messages.

      You can also set `useFlatFields` to automatically enable "flattened" XML serialization (request.useFlatFields) for all DataSource requests of a particular operationType.

      Note that `useFlatFields` is not generally recommended for use with structures where multiple simple type fields exist with the same name, however if used with such a structure, the first field to use a given name wins. "first" means the first field encountered in a depth first search. "wins" means only the first field will be present as a field when data binding.

      Parameters:
        `useFlatFields` - useFlatFields Default value is null
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getUseFlatFields

          java.lang.Boolean getUseFlatFields()

      The `useFlatFields` flag causes all simple type fields anywhere in a nested set of DataSources to be exposed as a flat list for form binding.

      `useFlatFields` is typically used with imported metadata, such as `XMLTools.loadXMLSchema(java.lang.String, com.smartgwt.client.data.XSDLoadCallback)` from a `XMLTools.loadWSDL(java.lang.String, com.smartgwt.client.data.WSDLLoadCallback)`, as a means of eliminating levels of XML nesting that aren't meaningful in a user interface, without the cumbersome and fragile process of mapping form fields to XML structures.

      For example, having called `WebService.getInputDS(java.lang.String)` to retrieve the input message schema for a web service operation whose input message looks like this:

           <FindServices>
               <searchFor>search text</searchFor>
               <Options>
                   <caseSensitive>false</caseSensitive>
               </Options>
               <IncludeInSearch>
                   <serviceName>true</serviceName>
                   <documentation>true</documentation>
                   <keywords>true</keywords>
               </IncludeInSearch>
           </FindServices>

      Setting `useFlatFields` on a `DynamicForm` that is bound to this input message schema would result in 5 `FormItem` reflecting the 5 simple type fields in the message.

      For this form, the result of `DynamicForm.getValues()` might look like:

          {
              searchFor: "search text",
              caseSensitive: false,
              serviceName: true,
              documentation : true,
              keywords : true
           }

      When contacting a `WebService`, these values can be automatically mapped to the structure of the input message for a web service operation by setting `useFlatFields` (for use with `WebService.callOperation(java.lang.String, java.util.Map, java.lang.String, com.smartgwt.client.data.WebServiceCallback)`) or by setting `useFlatFields` (for use with a `DataSource` that is `'bound to a WSDL web service'` via `wsOperation`).

      Using these two facilities in conjunction (component.useFlatFields and request.useFlatFields) allows gratuitous nesting to be consistently bypassed in both the user presentation and when providing the data for XML messages.

      You can also set `useFlatFields` to automatically enable "flattened" XML serialization (request.useFlatFields) for all DataSource requests of a particular operationType.

      Note that `useFlatFields` is not generally recommended for use with structures where multiple simple type fields exist with the same name, however if used with such a structure, the first field to use a given name wins. "first" means the first field encountered in a depth first search. "wins" means only the first field will be present as a field when data binding.

      Returns:
        Boolean

    - #### setHiliteProperty

          void setHiliteProperty(java.lang.String hiliteProperty)

      Marker that can be set on a record to flag that record as hilited. Should be set to a value that matches `id` for a hilite defined on this component.
      Parameters:
        `hiliteProperty` - hiliteProperty Default value is "_hilite"

    - #### getHiliteProperty

          java.lang.String getHiliteProperty()

      Marker that can be set on a record to flag that record as hilited. Should be set to a value that matches `id` for a hilite defined on this component.
      Returns:
        String

    - #### setDragDataAction

          void setDragDataAction(DragDataAction dragDataAction)

      Indicates what to do with data dragged into another DataBoundComponent. See DragDataAction type for details.
      Parameters:
        `dragDataAction` - dragDataAction Default value is Canvas.MOVE

    - #### getDragDataAction

          DragDataAction getDragDataAction()

      Indicates what to do with data dragged into another DataBoundComponent. See DragDataAction type for details.
      Returns:
        DragDataAction

    - #### setDragTrackerStyle

          void setDragTrackerStyle(java.lang.String dragTrackerStyle)

      CSS Style to apply to the drag tracker when dragging occurs on this component.
      Parameters:
        `dragTrackerStyle` - dragTrackerStyle Default value is "gridDragTracker"

    - #### getDragTrackerStyle

          java.lang.String getDragTrackerStyle()

      CSS Style to apply to the drag tracker when dragging occurs on this component.
      Returns:
        String

    - #### setCanAddFormulaFields

          void setCanAddFormulaFields(java.lang.Boolean canAddFormulaFields)

      Adds an item to the header context menu allowing users to launch a dialog to define a new field based on values present in other fields, using the `com.smartgwt.client..FormulaBuilder`.

      User-added formula fields can be persisted via `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)`.

      Parameters:
        `canAddFormulaFields` - canAddFormulaFields Default value is false

    - #### addSummaryField

          void addSummaryField()

      Convenience method to display a `com.smartgwt.client..SummaryBuilder` to create a new Summary Field. This is equivalent to calling `DataBoundComponentGen#editSummaryField` with no parameter.

    - #### addFormulaField

          void addFormulaField()

      Convenience method to display a `com.smartgwt.client..FormulaBuilder` to create a new Formula Field. This is equivalent to calling `DataBoundComponentGen#editFormulaField` with no parameter.

    - #### getCanAddFormulaFields

          java.lang.Boolean getCanAddFormulaFields()

      Adds an item to the header context menu allowing users to launch a dialog to define a new field based on values present in other fields, using the `com.smartgwt.client..FormulaBuilder`.

      User-added formula fields can be persisted via `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)`.

      Returns:
        Boolean

    - #### setAddFormulaFieldText

          void setAddFormulaFieldText(java.lang.String addFormulaFieldText)

      Text for a menu item allowing users to add a formula field
      Parameters:
        `addFormulaFieldText` - addFormulaFieldText Default value is "Add formula column..."

    - #### getAddFormulaFieldText

          java.lang.String getAddFormulaFieldText()

      Text for a menu item allowing users to add a formula field
      Returns:
        String

    - #### setEditFormulaFieldText

          void setEditFormulaFieldText(java.lang.String editFormulaFieldText)

      Text for a menu item allowing users to edit a formula field
      Parameters:
        `editFormulaFieldText` - editFormulaFieldText Default value is "Edit formula..."

    - #### getEditFormulaFieldText

          java.lang.String getEditFormulaFieldText()

      Text for a menu item allowing users to edit a formula field
      Returns:
        String

    - #### setCanAddSummaryFields

          void setCanAddSummaryFields(java.lang.Boolean canAddSummaryFields)

      Adds an item to the header context menu allowing users to launch a dialog to define a new text field that can contain both user-defined text and the formatted values present in other fields, using the `com.smartgwt.client..SummaryBuilder`.

      User-added summary fields can be persisted via `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)`.

      Parameters:
        `canAddSummaryFields` - canAddSummaryFields Default value is false

    - #### getCanAddSummaryFields

          java.lang.Boolean getCanAddSummaryFields()

      Adds an item to the header context menu allowing users to launch a dialog to define a new text field that can contain both user-defined text and the formatted values present in other fields, using the `com.smartgwt.client..SummaryBuilder`.

      User-added summary fields can be persisted via `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)`.

      Returns:
        Boolean

    - #### setAddSummaryFieldText

          void setAddSummaryFieldText(java.lang.String addSummaryFieldText)

      Text for a menu item allowing users to add a formula field
      Parameters:
        `addSummaryFieldText` - addSummaryFieldText Default value is "Add summary column..."

    - #### getAddSummaryFieldText

          java.lang.String getAddSummaryFieldText()

      Text for a menu item allowing users to add a formula field
      Returns:
        String

    - #### setEditSummaryFieldText

          void setEditSummaryFieldText(java.lang.String editSummaryFieldText)

      Text for a menu item allowing users to edit the formatter for a field
      Parameters:
        `editSummaryFieldText` - editSummaryFieldText Default value is "Edit summary format..."

    - #### getEditSummaryFieldText

          java.lang.String getEditSummaryFieldText()

      Text for a menu item allowing users to edit the formatter for a field
      Returns:
        String

    - #### selectRecord

          void selectRecord(Record record)

      Select/deselect a `Record` passed in explicitly, or by index.
      Parameters:
        `record` - record (or row number) to select

    - #### selectRecord

          void selectRecord(int record)

      Select/deselect a `Record` passed in explicitly, or by index.
      Parameters:
        `record` - record (or row number) to select

    - #### selectRecord

          void selectRecord(int record,
                            boolean newState)

      Select/deselect a `Record` passed in explicitly, or by index.
      Parameters:
        `record` - record (or row number) to select
        `newState` - new selection state (if null, defaults to true)

    - #### selectRecord

          void selectRecord(Record record,
                            boolean newState)

      Select/deselect a `Record` passed in explicitly, or by index.
      Parameters:
        `record` - record (or row number) to select
        `newState` - new selection state (if null, defaults to true)

    - #### selectRecords

          void selectRecords(int[] records)

      Select/deselect a list of `Record`s passed in explicitly, or by index.
      Parameters:
        `records` - records (or row numbers) to select

    - #### selectRecords

          void selectRecords(int[] records,
                             boolean newState)

      Select/deselect a list of `Record`s passed in explicitly, or by index.
      Parameters:
        `records` - records (or row numbers) to select
        `newState` - new selection state

    - #### selectRecords

          void selectRecords(Record[] records)

      Select/deselect a list of `Record`s passed in explicitly, or by index.
      Parameters:
        `records` - records (or row numbers) to select

    - #### selectRecords

          void selectRecords(Record[] records,
                             boolean newState)

      Select/deselect a list of `Record`s passed in explicitly, or by index.
      Parameters:
        `records` - records (or row numbers) to select
        `newState` - new selection state (if null, defaults to true)

    - #### deselectRecord

          void deselectRecord(Record record)

      Deselect a `Record` passed in explicitly, or by index.

      Synonym for `selectRecord(record, false)`

      Parameters:
        `record` - record (or row number) to deselect

    - #### deselectRecord

          void deselectRecord(int record)

      Deselect a `Record` passed in explicitly, or by index.

      Synonym for `selectRecord(record, false)`

      Parameters:
        `record` - record (or row number) to deselect

    - #### deselectRecords

          void deselectRecords(int[] records)

      Deselect a list of `Record`s passed in explicitly, or by index.

      Synonym for `selectRecords(records, false)`

      Parameters:
        `records` - records (or row numbers) to deselect

    - #### deselectRecords

          void deselectRecords(Record[] records)

      Deselect a list of `Record`s passed in explicitly, or by index.

      Synonym for `selectRecords(records, false)`

      Parameters:
        `records` - records (or row numbers) to deselect

    - #### selectAllRecords

          void selectAllRecords()

      Select all records

    - #### deselectAllRecords

          void deselectAllRecords()

      Deselect all records

    - #### anySelected

          java.lang.Boolean anySelected()

      Whether at least one item is selected
      Returns:
        true == at least one item is selected false == nothing at all is selected

    - #### enableHilite

          void enableHilite(java.lang.String hiliteID)

      Enable / disable a `hilites`
      Parameters:
        `hiliteID` - ID of hilite to enable

    - #### enableHilite

          void enableHilite(java.lang.String hiliteID,
                            boolean enable)

      Enable / disable a `hilites`
      Parameters:
        `hiliteID` - ID of hilite to enable
        `enable` - new enabled state to apply - if null, defaults to true

    - #### disableHilite

          void disableHilite(java.lang.String hiliteID)

      Disable a hilite
      Parameters:
        `hiliteID` - ID of hilite to disable

    - #### enableHiliting

          void enableHiliting()

      Enable all hilites.

    - #### enableHiliting

          void enableHiliting(boolean enable)

      Enable all hilites.
      Parameters:
        `enable` - new enabled state to apply - if null, defaults to true

    - #### disableHiliting

          void disableHiliting()

      Disable all hilites.

    - #### getDragData

          Record[] getDragData()

      During a drag-and-drop interaction, this method returns the set of records being dragged out of the component. In the default implementation, this is the list of currently selected records.

      This method is consulted by `ListGrid.willAcceptDrop()`.

      Returns:
        Array of `Record`s that are currently selected.

    - #### transferSelectedData

          void transferSelectedData(DataBoundComponent source)

      Simulates a drag / drop type transfer of the selected records in some other component to this component, without requiring any user interaction. This method acts on the dropped records exactly as if they had been dropped in an actual drag / drop interaction, including any special databound behavior invoked by calling `getDropValues()` for each dropped record.

      To transfer all data in, for example, a `ListGrid`, call grid.selection.selectAll() first.

      Note that drag/drop type transfers of records between components are asynchronous operations: Smart GWT may need to perform server turnarounds to establish whether dropped records already exist in the target component. Therefore, it is possible to issue a call to `transferSelectedData()` and/or the `drop()` method of a databound component whilst a transfer is still active. When this happens, Smart GWT adds the second and subsequent transfer requests to a queue and runs them one after the other. If you want to be notified when a transfer process has actually completed, use `addDropCompleteHandler`. See the `Dragging` documentation for an overview of list grid drag/drop data transfer.

      Parameters:
        `source` - source component from which the records will be tranferred

    - #### transferSelectedData

          void transferSelectedData(DataBoundComponent source,
                                    int index)

      Simulates a drag / drop type transfer of the selected records in some other component to this component, without requiring any user interaction. This method acts on the dropped records exactly as if they had been dropped in an actual drag / drop interaction, including any special databound behavior invoked by calling `getDropValues()` for each dropped record.

      To transfer all data in, for example, a `ListGrid`, call grid.selection.selectAll() first.

      Note that drag/drop type transfers of records between components are asynchronous operations: Smart GWT may need to perform server turnarounds to establish whether dropped records already exist in the target component. Therefore, it is possible to issue a call to `transferSelectedData()` and/or the `drop()` method of a databound component whilst a transfer is still active. When this happens, Smart GWT adds the second and subsequent transfer requests to a queue and runs them one after the other. If you want to be notified when a transfer process has actually completed, use `addDropCompleteHandler`. See the `Dragging` documentation for an overview of list grid drag/drop data transfer.

      Parameters:
        `source` - source component from which the records will be transferred
        `index` - target index (drop position) of the rows within this grid.

    - #### getRecordIndex

          int getRecordIndex(Record record)

      Get the index of the provided record.

      Override in subclasses to provide more specific behaviour, for instance, when data holds a large number of records

      Parameters:
        `record` - the record whose index is to be retrieved
      Returns:
        indexindex of the record, or -1 if not found

    - #### getTitleFieldValue

          java.lang.String getTitleFieldValue(Record record)

      Get the value of the titleField for the passed record

      Override in subclasses

      Parameters:
        `record` - the record whose index is to be retrieved
      Returns:
        valuethe value of the titleField for the passed record

    - #### getTitleField

          java.lang.String getTitleField()

      Method to return the fieldName which represents the "title" for records in this Component.
      If this.titleField is explicitly specified it will always be used. Otherwise, default implementation will check `titleField` for databound components.
      For non databound components returns the first defined field name of `"title"`, `"name"`, or `"id"`. If we dont find any field-names that match these titles, the first field in the component will be used instead.
      Returns:
        fieldName the title field for this component.

    - #### setTitleField

          void setTitleField(java.lang.String titleField)

      Sets the best field to use for a user-visible title for an individual record from this component.
      Parameters:
        `fieldName` - the title field for this component.

    - #### setDataSource

          void setDataSource(DataSource dataSource)

      Bind to a DataSource. Binding to a DataSource means that the component will use the DataSource to provide default data for its fields.

      When binding a previously-bound component to a new DataSource, if the component has any existing "fields" or has a dataset, these will be discarded by default, since it is assumed the new DataSource may represent a completely unrelated set of objects. If the old "fields" are still relevant, you may be able to refer to setDataSource(dataSource, fields) as an alternative method if the widget has an implementation of it.

      Parameters:
        `dataSource` - DataSource to bind to. Default value is null

    - #### setDataSource

          void setDataSource(java.lang.String dataSource)

      Bind to a DataSource. Binding to a DataSource means that the component will use the DataSource to provide default data for its fields.

      When binding a previously-bound component to a new DataSource, if the component has any existing "fields" or has a dataset, these will be discarded by default, since it is assumed the new DataSource may represent a completely unrelated set of objects. If the old "fields" are still relevant, you may be able to refer to setDataSource(dataSource, fields) as an alternative method if the widget has an implementation of it.

      Parameters:
        `dataSource` - name of DataSource to bind to

    - #### getDataSource

          DataSource getDataSource()

      The DataSource that this component should bind to for default fields and for performing `DataSource requests`.
      Returns:
        DataSource

    - #### fetchData

          void fetchData()

      Retrieves data from the DataSource that matches the specified criteria.

      When `fetchData()` is first called, if data has not already been provided via `setData()`, this method will create a `ResultSet`, which will be configured based on component settings such as `fetchOperation` and `dataPageSize`, as well as the general purpose `dataProperties`. The created ResultSet will automatically send a DSRequest to retrieve data from the dataSource, and from then on will automatically manage paging through large datasets, as well as performing filtering and sorting operations inside the browser when possible - see the ResultSet docs for details.

      NOTE: do not use both `autoFetchData` and a call to `fetchData()` - this may result in two DSRequests to fetch data. Use either `autoFetchData` and `setAutoFetchCriteria()` or a manual call to fetchData() passing criteria.

      Whether a ResultSet was automatically created or provided via `setData()`, subsequent calls to fetchData() will simply call `resultSet.setCriteria()`.

      Changes to criteria may or may not result in a DSRequest to the server due to client-side filtering. You can call `willFetchData(criteria)` to determine if new criteria will result in a server fetch.

      If you need to force data to be re-fetched, you can call `invalidateCache()` and new data will automatically be fetched from the server using the current criteria and sort direction. NOTE: when using `invalidateCache()` there is no need to also call `fetchData()` and in fact this could produce unexpected results.

      This method takes an optional callback parameter (set to a `DSCallback`) to fire when the fetch completes. Note that this callback will not fire if no server fetch is performed. In this case the data is updated synchronously, so as soon as this method completes you can interact with the new data. If necessary, you can use `resultSet.willFetchData()` to determine whether or not a server fetch will occur when `fetchData()` is called with new criteria.

      In addition to the callback parameter for this method, developers can use `resultSet.addDataArrivedHandler` to be notified every time data is loaded.

    - #### fetchData

          void fetchData(Criteria criteria)

      Retrieves data from the DataSource that matches the specified criteria.

      When `fetchData()` is first called, if data has not already been provided via `setData()`, this method will create a `ResultSet`, which will be configured based on component settings such as `fetchOperation` and `dataPageSize`, as well as the general purpose `dataProperties`. The created ResultSet will automatically send a DSRequest to retrieve data from the dataSource, and from then on will automatically manage paging through large datasets, as well as performing filtering and sorting operations inside the browser when possible - see the ResultSet docs for details.

      NOTE: do not use both `autoFetchData` and a call to `fetchData()` - this may result in two DSRequests to fetch data. Use either `autoFetchData` and `setAutoFetchCriteria()` or a manual call to fetchData() passing criteria.

      Whether a ResultSet was automatically created or provided via `setData()`, subsequent calls to fetchData() will simply call `resultSet.setCriteria()`.

      Changes to criteria may or may not result in a DSRequest to the server due to client-side filtering. You can call `willFetchData(criteria)` to determine if new criteria will result in a server fetch.

      If you need to force data to be re-fetched, you can call `invalidateCache()` and new data will automatically be fetched from the server using the current criteria and sort direction. NOTE: when using `invalidateCache()` there is no need to also call `fetchData()` and in fact this could produce unexpected results.

      This method takes an optional callback parameter (set to a `DSCallback`) to fire when the fetch completes. Note that this callback will not fire if no server fetch is performed. In this case the data is updated synchronously, so as soon as this method completes you can interact with the new data. If necessary, you can use `resultSet.willFetchData()` to determine whether or not a server fetch will occur when `fetchData()` is called with new criteria.

      In addition to the callback parameter for this method, developers can use `resultSet.addDataArrivedHandler` to be notified every time data is loaded.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`

    - #### fetchData

          void fetchData(Criteria criteria,
                         DSCallback callback)

      Retrieves data from the DataSource that matches the specified criteria.

      When `fetchData()` is first called, if data has not already been provided via `setData()`, this method will create a `ResultSet`, which will be configured based on component settings such as `fetchOperation` and `dataPageSize`, as well as the general purpose `dataProperties`. The created ResultSet will automatically send a DSRequest to retrieve data from the dataSource, and from then on will automatically manage paging through large datasets, as well as performing filtering and sorting operations inside the browser when possible - see the ResultSet docs for details.

      NOTE: do not use both `autoFetchData` and a call to `fetchData()` - this may result in two DSRequests to fetch data. Use either `autoFetchData` and `setAutoFetchCriteria()` or a manual call to fetchData() passing criteria.

      Whether a ResultSet was automatically created or provided via `setData()`, subsequent calls to fetchData() will simply call `resultSet.setCriteria()`.

      Changes to criteria may or may not result in a DSRequest to the server due to client-side filtering. You can call `willFetchData(criteria)` to determine if new criteria will result in a server fetch.

      If you need to force data to be re-fetched, you can call `invalidateCache()` and new data will automatically be fetched from the server using the current criteria and sort direction. NOTE: when using `invalidateCache()` there is no need to also call `fetchData()` and in fact this could produce unexpected results.

      This method takes an optional callback parameter (set to a `DSCallback`) to fire when the fetch completes. Note that this callback will not fire if no server fetch is performed. In this case the data is updated synchronously, so as soon as this method completes you can interact with the new data. If necessary, you can use `resultSet.willFetchData()` to determine whether or not a server fetch will occur when `fetchData()` is called with new criteria.

      In addition to the callback parameter for this method, developers can use `resultSet.addDataArrivedHandler` to be notified every time data is loaded.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`
        `callback` - callback to invoke when a fetch is complete. Fires only if server contact was required

    - #### fetchData

          void fetchData(Criteria criteria,
                         DSCallback callback,
                         DSRequest requestProperties)

      Retrieves data from the DataSource that matches the specified criteria.

      When `fetchData()` is first called, if data has not already been provided via `setData()`, this method will create a `ResultSet`, which will be configured based on component settings such as `fetchOperation` and `dataPageSize`, as well as the general purpose `dataProperties`. The created ResultSet will automatically send a DSRequest to retrieve data from the dataSource, and from then on will automatically manage paging through large datasets, as well as performing filtering and sorting operations inside the browser when possible - see the ResultSet docs for details.

      NOTE: do not use both `autoFetchData` and a call to `fetchData()` - this may result in two DSRequests to fetch data. Use either `autoFetchData` and `setAutoFetchCriteria()` or a manual call to fetchData() passing criteria.

      Whether a ResultSet was automatically created or provided via `setData()`, subsequent calls to fetchData() will simply call `resultSet.setCriteria()`.

      Changes to criteria may or may not result in a DSRequest to the server due to client-side filtering. You can call `willFetchData(criteria)` to determine if new criteria will result in a server fetch.

      If you need to force data to be re-fetched, you can call `invalidateCache()` and new data will automatically be fetched from the server using the current criteria and sort direction. NOTE: when using `invalidateCache()` there is no need to also call `fetchData()` and in fact this could produce unexpected results.

      This method takes an optional callback parameter (set to a `DSCallback`) to fire when the fetch completes. Note that this callback will not fire if no server fetch is performed. In this case the data is updated synchronously, so as soon as this method completes you can interact with the new data. If necessary, you can use `resultSet.willFetchData()` to determine whether or not a server fetch will occur when `fetchData()` is called with new criteria.

      In addition to the callback parameter for this method, developers can use `resultSet.addDataArrivedHandler` to be notified every time data is loaded.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`
        `callback` - callback to invoke when a fetch is complete. Fires only if server contact was required
        `requestProperties` - additional properties to set on the DSRequest that will be issued

    - #### filterData

          void filterData()

      Retrieves data that matches the provided criteria and displays the matching data in this component.

      This method behaves exactly like `ListGrid.fetchData()` except that `textMatchStyle` is automatically set to "substring" so that String-valued fields are matched by case-insensitive substring comparison.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`

    - #### filterData

          void filterData(Criteria criteria)

      Retrieves data that matches the provided criteria and displays the matching data in this component.

      This method behaves exactly like `ListGrid.fetchData()` except that `textMatchStyle` is automatically set to "substring" so that String-valued fields are matched by case-insensitive substring comparison.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`
        `callback` - callback to invoke when a fetch is complete. Fires only if server contact was required; see `fetchData()` for details

    - #### filterData

          void filterData(Criteria criteria,
                          DSCallback callback)

      Retrieves data that matches the provided criteria and displays the matching data in this component.

      This method behaves exactly like `ListGrid.fetchData()` except that `textMatchStyle` is automatically set to "substring" so that String-valued fields are matched by case-insensitive substring comparison.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`
        `callback` - callback to invoke when a fetch is complete. Fires only if server contact was required; see `fetchData()` for details

    - #### filterData

          void filterData(Criteria criteria,
                          DSCallback callback,
                          DSRequest requestProperties)

      Retrieves data that matches the provided criteria and displays the matching data in this component.

      This method behaves exactly like `ListGrid.fetchData()` except that `textMatchStyle` is automatically set to "substring" so that String-valued fields are matched by case-insensitive substring comparison.

      Parameters:
        `criteria` - Search criteria. If a `DynamicForm` is passed in as this argument instead of a raw criteria object, will be derived by calling `DynamicForm.getValuesAsCriteria()`
        `callback` - callback to invoke when a fetch is complete. Fires only if server contact was required; see `fetchData()` for details
        `requestProperties` - for databound components only - optional additional properties to set on the DSRequest that will be issued

    - #### setAutoFetchData

          void setAutoFetchData(java.lang.Boolean autoFetchData)

      If true, when this component is first drawn, automatically call `fetchData()` or `filterData()` depending on `getAutoFetchAsFilter()` . Criteria for this fetch may be picked up from `initialCriteria` and textMatchStyle may be specified via `getAutoFetchTextMatchStyle()`.

      NOTE: If autoFetchData is set, calling ListGrid.fetchData() before draw will cause two requests to be issued, one from the manual call to fetchData() and one from the autoFetchData setting. The second request will use only `initialCriteria` and not any other criteria or settings from the first request. Generally, turn off autoFetchData if you are going to manually call fetchData() at any time.

      Parameters:
        `autoFetchData` - autoFetchData

    - #### getAutoFetchData

          java.lang.Boolean getAutoFetchData()

      If true, when this component is first drawn, automatically call `fetchData()` or `filterData()` depending on `getAutoFetchAsFilter()` . Criteria for this fetch may be picked up from `initialCriteria` and textMatchStyle may be specified via `getAutoFetchTextMatchStyle()`.

      NOTE: If autoFetchData is set, calling ListGrid.fetchData() before draw will cause two requests to be issued, one from the manual call to fetchData() and one from the autoFetchData setting. The second request will use only `initialCriteria` and not any other criteria or settings from the first request. Generally, turn off autoFetchData if you are going to manually call fetchData() at any time.

      Returns:
        autoFetchData autoFetchData

    - #### setAutoFetchAsFilter

          void setAutoFetchAsFilter(java.lang.Boolean autoFetchAsFilter)

      If `setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `fetchData()` or `filterData()`
      Parameters:
        `autoFetchAsFilter` - autoFetchAsFilter

    - #### getAutoFetchAsFilter

          java.lang.Boolean getAutoFetchAsFilter()

      If `setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `fetchData()` or `filterData()`
      Returns:
        auto fetch as filter

    - #### setAutoFetchTextMatchStyle

          void setAutoFetchTextMatchStyle(TextMatchStyle autoFetchAsFilter)

      If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `fetchData()` call.
      Parameters:
        `autoFetchTextMatchStyle` - autoFetchTextMatchStyle

    - #### getAutoFetchTextMatchStyle

          TextMatchStyle getAutoFetchTextMatchStyle()

      If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `fetchData()` call.
      Returns:
        autoFetchTextMatchStyle autoFetchTextMatchStyle

    - #### setInitialCriteria

          void setInitialCriteria(Criteria initialCriteria)
                           throws java.lang.IllegalStateException

      Criteria to use when `setAutoFetchData(Boolean)` is used.
      Parameters:
        `initialCriteria` - the initial criteria
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getInitialCriteria

          Criteria getInitialCriteria()

      Criteria to use when `setAutoFetchData(Boolean)` is used.
      Returns:
        the criteria

    - #### invalidateCache

          void invalidateCache()

      Invalidate the current data cache for this databound component via a call to the dataset's `invalidateCache()` method, for example, `ResultSet.invalidateCache()`.

      NOTE: there is no need to call `invalidateCache()` when a save operation is performed on a DataSource. Automatic cache synchronization features will automatically update caches - see `ResultSet` for details. If automatic cache synchronization isn't working, troubleshoot the problem using the steps suggested in the FAQ rather than just calling invalidateCache(). Calling `invalidateCache()` unnecessarily causes extra server load and added code complexity.

      Calling `invalidateCache()` will automatically cause a new fetch to be performed with the current set of criteria if data had been previously fetched and the component is currently drawn with data visible - there is no need to manually call fetchData() after invalidateCache() and this could result in duplicate fetches.

      While data is being re-loaded after a call to `invalidateCache()`, the widget is in a state similar to initial data load - it doesn't know the total length of the dataset and any APIs that act on records or row indices will necessarily fail and should not be called. To detect that the widget is in this state, call `ResultSet.lengthIsKnown()`.

      `invalidateCache()` only has an effect if this component's dataset is a data manager class that manages a cache (eg ResultSet or ResultTree). If data was provided as a simple Array or List, invalidateCache() does nothing.

      See Also:
        `ListGrid.refreshData()`, `DataBoundComponentMethods overview and related methods`

    - #### getResultSet

          ResultSet getResultSet()

      Return the underlying data of this DataBoundComponent as a `ResultSet`.

      Note that this method should only be called after initial data has been fetched by this DataBoundComponent.

      Returns:
        ResultSet, or null if the underlying data is not a ResultSet
      See Also:
        `fetchData()`

    - #### getRecordList

          RecordList getRecordList()

      Return the underlying data of this DataBoundComponent as a `RecordList`.

      Depending on the component configuration, the actual JavaScript instance of the returned RecordList may be one of several types:

      - If the component is not bound to a `DataSource`, the instance is generally an Array of `Record`.
      - If the component is bound to a DataSource, the instance is a `ResultSet`.
      - If the component is a grouped ListGrid, the instance is a `Tree`. To access the ungrouped record list regardless of grouping status, use

            isGrouped() ? getOriginalRecordList() : getRecordList()

      - If the component is a `TreeGrid`, the instance is a ResultTree.
      The underlying type determines the structure of the returned data. An Array or ResultSet represents a list of records, but a Tree or ResultTree represents a list of open rows in the tree, including groups or other nodes which contain no records.
      Returns:
        the RecordList

    - #### getDataAsJSList

          com.google.gwt.core.client.JavaScriptObject getDataAsJSList()

    - #### exportData

          void exportData()

      Uses a "fetch" operation on the current `DataSource` to retrieve data that matches the current filter and sort criteria for this component, then exports the resulting data to a file or window in the requested format.

      A variety of DSRequest settings, such as `exportAs` and `exportFilename`, affect the exporting process: see `exportResults` for further detail.

      Note that data exported via this method does not include any client-side formatting and relies on both the Smart GWT server and server-side DataSources. To export client-data with formatters applied, see `exportClientData`, which still requires the Smart GWT server but does not rely on server-side DataSources.

      For more information on exporting data, see `DataSource.exportData`.

      See Also:
        `DataBoundComponentMethods overview and related methods`

    - #### exportData

          void exportData(DSRequest requestProperties)

      Uses a "fetch" operation on the current `DataSource` to retrieve data that matches the current filter and sort criteria for this component, then exports the resulting data to a file or window in the requested format.

      A variety of DSRequest settings, such as `exportAs` and `exportFilename`, affect the exporting process: see `exportResults` for further detail.

      Note that data exported via this method does not include any client-side formatting and relies on both the Smart GWT server and server-side DataSources. To export client-data with formatters applied, see `exportClientData`, which still requires the Smart GWT server but does not rely on server-side DataSources.

      For more information on exporting data, see `DataSource.exportData`.

      Parameters:
        `requestProperties` - additional properties to set on the DSRequest that will be issued
      See Also:
        `DataBoundComponentMethods overview and related methods`

    - #### editHilites

          void editHilites()

      Shows a HiliteEditor interface allowing end-users to edit the data-hilites currently in use by this DataBoundComponent.

    - #### getHiliteState

          java.lang.String getHiliteState()

      Get the current hilites encoded as a String, for saving.
      Returns:
        the hilite state

    - #### setHiliteState

          void setHiliteState(java.lang.String hiliteState)

      Set the current hilites based on a hiliteState String previously returned from getHilitesState.
      Parameters:
        `hiliteState` - hilites state encoded as a String

    - #### setHilites

          void setHilites(Hilite[] hilites)

      Accepts an array of hilite objects and applies them to this DataBoundComponent. See also `getHilites` for a method of retrieving the hilite array for storage, including hilites manually added by the user.
      Parameters:
        `hilites` - array of hilite objects

    - #### getHilites

          Hilite[] getHilites()

      Return the set of hilite-objects currently applied to this DataBoundComponent. These can be saved for storage and then restored to a component later via setHilites().
      Returns:
        array of hilite objects

    - #### getFieldAlignments

          Alignment[] getFieldAlignments()

      Returna an array of field alignments for this grid
      Returns:
        array of Alignments

    - #### getDeepCloneOnEdit

          java.lang.Boolean getDeepCloneOnEdit()

      Before we start editing values in this DataBoundComponent, should we perform a deep clone of the underlying values. See `DataSource.getDeepCloneOnEdit()` for details of what this means.

      If this value is not explicitly set, it defaults to the DataSource `deepCloneOnEdit` value. This value can also be overridden per-field with `DataSourceField.setDeepCloneOnEdit(java.lang.Boolean)`.

      Like the other `deepCloneOnEdit` settings, this flag only has an effect if you are editing a values object that contains nested objects or arrays, using `Canvas.setDataPath(java.lang.String)`

    - #### setDeepCloneOnEdit

          void setDeepCloneOnEdit(java.lang.Boolean deepCloneOnEdit)

      Before we start editing values in this DataBoundComponent, should we perform a deep clone of the underlying values. See `DataSource.getDeepCloneOnEdit()` for details of what this means.

      If this value is not explicitly set, it defaults to the DataSource `deepCloneOnEdit` value. This value can also be overridden per-field with `DataSourceField.setDeepCloneOnEdit(java.lang.Boolean)`.

      Like the other `deepCloneOnEdit` settings, this flag only has an effect if you are editing a values object that contains nested objects or arrays, using `Canvas.setDataPath(java.lang.String)`

    - #### setFields

          void setFields(com.google.gwt.core.client.JavaScriptObject... fields)

      Field setter variant (alternative to `setFields(FormItem...)`, `setFields(ListGridField...)`, etc.) that will accept an array of JavaScriptObject, rather than an array of SmartGWT Java wrappers of the field class type (e.g. `FormItem`, `ListGridField`, etc.) This is an advanced method and only for cases where you have the JavaScriptObject for each field but want to avoid having to create each associated SmartGWT Java wrapper.

      Note: use `toArray()` to create a Java array of JavaScriptObject if you only have the array itself as a single JavaScriptObject.

      Parameters:
        `fields` - the component fields

    - #### getFieldsAsJavaScriptObjects

          com.google.gwt.core.client.JavaScriptObject[] getFieldsAsJavaScriptObjects()

      Return the fields as JavaScriptObjects rather than as SmartGWT Java wrappers of the field class type (e.g. `FormItem`, `ListGridField`, etc.) This avoids building the SmartGWT Java wrappers for the fields in situations where they aren't needed - and for FormItems in particular - where there may not be enough information to determine the correct subclass, such as before the SmartClient instance underlying the `DynamicForm` has been created.
      Returns:
        the component fields

    - #### getFieldCount

          int getFieldCount()

      Return the number of fields.
      Returns:
        the number of fields