com.smartgwt.client.widgets.viewer

## Class DetailViewer

- java.lang.Object
- - com.google.gwt.user.client.ui.UIObject
  - - com.google.gwt.user.client.ui.Widget
    - - com.smartgwt.client.widgets.BaseWidget
      - - com.smartgwt.client.widgets.Canvas
        - - com.smartgwt.client.widgets.viewer.DetailViewer

- All Implemented Interfaces:
    com.google.gwt.event.logical.shared.HasAttachHandlers, com.google.gwt.event.shared.HasHandlers, com.google.gwt.user.client.EventListener, com.google.gwt.user.client.ui.HasVisibility, com.google.gwt.user.client.ui.IsWidget, LogicalStructure, DataBoundComponent, HasClearHandlers, HasClickHandlers, HasDoubleClickHandlers, HasDragCompleteHandlers, HasDragMoveHandlers, HasDragRepositionMoveHandlers, HasDragRepositionStartHandlers, HasDragRepositionStopHandlers, HasDragResizeMoveHandlers, HasDragResizeStartHandlers, HasDragResizeStopHandlers, HasDragStartHandlers, HasDragStopHandlers, HasDropCompleteHandlers, HasDropHandlers, HasDropMoveHandlers, HasDropOutHandlers, HasDropOverHandlers, HasFetchDataHandlers, HasFocusChangedHandlers, HasHoverHandlers, HasHoverHiddenHandlers, HasKeyDownHandlers, HasKeyPressHandlers, HasMouseDownHandlers, HasMouseMoveHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseStillDownHandlers, HasMouseUpHandlers, HasMouseWheelHandlers, HasMovedHandlers, HasParentMovedHandlers, HasResizedHandlers, HasRightMouseDownHandlers, HasRuleContextChangedHandlers, HasScrolledHandlers, HasShowContextMenuHandlers, HasVisibilityChangedHandlers

      public class DetailViewer
      extends Canvas
      implements DataBoundComponent

  Displays one or more records "horizontally" with one property per line.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.UIObject

      `com.google.gwt.user.client.ui.UIObject.DebugIdImpl, com.google.gwt.user.client.ui.UIObject.DebugIdImplEnabled`

  - ### Field Summary

    - ### Fields inherited from class com.smartgwt.client.widgets.BaseWidget

      `config, configOnly, factoryCreated, factoryProperties, id, nativeObject, scClassName`

    - ### Fields inherited from class com.google.gwt.user.client.ui.UIObject

      `DEBUG_ID_PREFIX`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DetailViewer()`
    `DetailViewer(com.google.gwt.core.client.JavaScriptObject jsObj)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `com.google.gwt.event.shared.HandlerRegistration` | `addDragCompleteHandler(DragCompleteHandler handler)` Add a `com.smartgwt.client.widgets.DragCompleteHandler`.
    `com.google.gwt.event.shared.HandlerRegistration` | `addDropCompleteHandler(DropCompleteHandler handler)` Add a `com.smartgwt.client.widgets.DropCompleteHandler`.
    `com.google.gwt.event.shared.HandlerRegistration` | `addFetchDataHandler(FetchDataHandler handler)` Add a fetchData handler.
    `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
    `static void` | `changeAutoChildDefaults(java.lang.String autoChildName, Canvas defaults)` Changes the defaults for Canvas AutoChildren named `autoChildName`.
    `static void` | `changeAutoChildDefaults(java.lang.String autoChildName, FormItem defaults)` Changes the defaults for FormItem AutoChildren named `autoChildName`.
    `protected com.google.gwt.core.client.JavaScriptObject` | `create()`
    `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` | `editFields()` Shows a FieldPicker interface allowing end-users to rearrange the order and visibiility of the fields in the associated DataBoundComponent.
    `void` | `editHilites()` Shows a HiliteEditor interface allowing end-users to edit the data-hilites currently in use by this DataBoundComponent.
    `java.lang.String` | `emptyMessageHTML()` Return the message to show if the component has no data.
    `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` | `exportClientData()` Exports this component's data with client-side formatters applied, so is suitable for direct display to users.
    `void` | `exportClientData(DSRequest requestProperties)`
    `void` | `exportClientData(DSRequest requestProperties, RPCCallback callback)` Exports this component's data with client-side formatters applied, so is suitable for direct display to users.
    `void` | `exportData()` See `DataBoundComponent.exportData(com.smartgwt.client.data.DSRequest,com.smartgwt.client.rpc.RPCCallback)`
    `void` | `exportData(DSRequest requestProperties)` See `DataBoundComponent.exportData(com.smartgwt.client.data.DSRequest,com.smartgwt.client.rpc.RPCCallback)`
    `void` | `exportData(DSRequest requestProperties, RPCCallback callback)` 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` | `fetchRelatedData(ListGridRecord record, Canvas schema)` Based on the relationship between the DataSource this component is bound to and the DataSource specified as the "schema" argument, call fetchData() to retrieve records in this data set that are related to the passed-in record.
    `void` | `fetchRelatedData(ListGridRecord record, Canvas schema, DSCallback callback)`
    `void` | `fetchRelatedData(ListGridRecord record, Canvas schema, DSCallback callback, DSRequest requestProperties)` Based on the relationship between the DataSource this component is bound to and the DataSource specified as the "schema" argument, call fetchData() to retrieve records in this data set that are related to the passed-in record.
    `boolean` | `fieldIsVisible(java.lang.String field)` Check whether a field is currently visible
    `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.
    `Record` | `find(AdvancedCriteria adCriteria)` Filters all objects according to the AdvancedCriteria passed and returns the first matching object or null if not found
    `Record[]` | `findAll(AdvancedCriteria adCriteria)` Filters all objects according to the AdvancedCriteria passed
    `int` | `findIndex(AdvancedCriteria adCriteria)` Finds the index of the first Record that matches with the AdvacendCriteria passed.
    `int` | `findNextIndex(int startIndex, AdvancedCriteria adCriteria)` Like `RecordList.findIndex(java.util.Map)`, but considering the startIndex parameter.
    `int` | `findNextIndex(int startIndex, AdvancedCriteria adCriteria, int endIndex)` Like `RecordList.findIndex(java.util.Map)`, but considering the startIndex and endIndex parameters.
    `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 `DataBoundComponent.setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()`
    `java.lang.Boolean` | `getAutoFetchData()` If true, when this component is first drawn, automatically call `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()` depending on `DataBoundComponent.getAutoFetchAsFilter()` .
    `TextMatchStyle` | `getAutoFetchTextMatchStyle()` If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `DataBoundComponent.fetchData()` call.
    `java.lang.String` | `getBlockSeparator()` A string (HTML acceptable) that will be written to a page to separate blocks.
    `java.lang.String` | `getBlockStyle()` CSS style for each block (one record's worth of data).
    `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`.
    `java.lang.Boolean` | `getCanPickFields()` If set, right-clicking on the DetailViewer will show a context menu that offers to bring up a `FieldPicker` for configuring which fields are displayed and their order.
    `java.lang.String` | `getCellStyle()` CSS style for a normal value
    `java.lang.String` | `getConfigureFieldsText()` The title for the Configure Fields menu item.
    `DetailViewerRecord[]` | `getData()` A single record object or an array of them, specifying data.
    `java.lang.String` | `getDataArity()` A DetailViewer is a `dataArity`:either component by default which means data population from `Canvas.dataContext` will be treated like a DynamicForm (i.e.
    `com.google.gwt.core.client.JavaScriptObject` | `getDataAsJSList()`
    `Record[]` | `getDataAsRecord()` Deprecated. in favor of `getDataAsRecordArray()`.
    `Record[]` | `getDataAsRecordArray()` A single record object or an array of them, specifying data.
    `RecordList` | `getDataAsRecordList()` A single record object or an array of them, specifying data.
    `FetchMode` | `getDataFetchMode()` DetailViewers do not yet support paging, and will fetch and render all available records.
    `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`.
    `DateDisplayFormat` | `getDateFormatter()` How should Date type values be displayed in this DetailViewer by default?
    `DateDisplayFormat` | `getDatetimeFormatter()` Display format to use for fields specified as type 'datetime'.
    `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` | `getEditProxyConstructor()` Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
    `java.lang.String` | `getEditSummaryFieldText()` Text for a menu item allowing users to edit the formatter for a field
    `java.lang.String` | `getEmptyCellValue()` Text to show for an empty cell
    `java.lang.String` | `getEmptyMessage()` The string to display in the body of a detailViewer with no records.
    `java.lang.String` | `getEmptyMessageStyle()` CSS style to display this message in
    `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.Boolean` | `getExportIncludeSummaries()` If Summary rows exist for this component, whether to include them when exporting client data.
    `java.lang.String` | `getFetchOperation()` Operation ID this component should use when performing fetch operations.
    `DSRequest` | `getFetchRequestProperties()` If `autoFetchData` is `true`, this attribute allows the developer to declaratively specify `DSRequest` properties for the initial `fetchData()` call.
    `Alignment[]` | `getFieldAlignments()` Returna an array of field alignments for this grid
    `int` | `getFieldCount()` Return the number of fields.
    `java.lang.String` | `getFieldIdProperty()` Deprecated. It is not possible to change this value; changing this attribute did not actually cause the framework to use a different property for the ID of a field.
    `java.lang.String[]` | `getFieldPickerFieldProperties()` Names of properties on `DetailViewerField` for which the `FieldPicker` should show an editing interface, for convenience.
    `FieldPickerWindow` | `getFieldPickerWindow()` Instance of `FieldPickerWindow` used if `canPickFields` is set.
    `DetailViewerField[]` | `getFields()` An array of field objects, specifying the order and type of fields to display in this DetailViewer.
    `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` | `getHeaderStyle()` CSS style for a header
    `java.lang.Integer` | `getHiliteIconHeight()` Height for hilite icons for this listGrid.
    `int` | `getHiliteIconLeftPadding()` How much padding should there be on the left of `hilite icons` by default? Can be overridden at the field level
    `HiliteIconPosition` | `getHiliteIconPosition()` When `hiliteIcons` are present, where the hilite icon will be placed relative to the field value.
    `int` | `getHiliteIconRightPadding()` How much padding should there be on the right of `hilite icons` by default? Can be overridden at the field level
    `java.lang.String[]` | `getHiliteIcons()` Specifies a list of icons that can be used in `hilites`.
    `int` | `getHiliteIconSize()` Default width and height of `hilite icons` for this component.
    `java.lang.Integer` | `getHiliteIconWidth()` Width for hilite icons for this component.
    `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` | `getImplicitCriteria()` Criteria that are never shown to or edited by the user and are cumulative with any criteria provided via `DataBoundComponent.initialCriteria`, `DataBoundComponent.setCriteria()` etc.
    `Criteria` | `getInitialCriteria()` Criteria to use when `DataBoundComponent.setAutoFetchData(Boolean)` is used.
    `Alignment` | `getLabelAlign()` Horizontal alignment of value-labels in this viewer.
    `java.lang.String` | `getLabelPrefix()` text to put before a label
    `java.lang.String` | `getLabelStyle()` CSS style for a normal detail label
    `java.lang.String` | `getLabelSuffix()` text to put after a label
    `java.lang.String` | `getLinkTextProperty()` Property name on a record that will hold the link text for that record.
    `java.lang.String` | `getLoadingMessage()` The string to display in the body of a detailViewer which is loading records.
    `java.lang.String` | `getLoadingMessageStyle()` CSS style to use for the `loadingMessage`.
    `com.smartgwt.logicalstructure.core.LogicalStructureObject` | `getLogicalStructure()` Getter implementing the `LogicalStructure` interface, which supports Eclipse's logical structure debugging facility.
    `static DetailViewer` | `getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)`
    `java.lang.Boolean` | `getPreventDuplicates()` If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `DataBoundComponent.transferSelectedData(com.smartgwt.client.widgets.DataBoundComponent)`.
    `java.lang.String` | `getPrintCellStyle()` Optional CSS style for a cell in printable HTML for this component.
    `java.lang.String` | `getPrintHeaderStyle()` Optional CSS style for a header in printable HTML for this component.
    `java.lang.String` | `getPrintLabelStyle()` Optional CSS style for a label cell in printable HTML for this component.
    `java.lang.Boolean` | `getProgressiveLoading()` Indicates whether or not this component will load its data `progressively`
    `int` | `getRecordIndex(Record record)` Get the index of the provided record.
    `RecordList` | `getRecordList()` Return the underlying data of this DataBoundComponent as a `RecordList`.
    `int` | `getRecordsPerBlock()` The number of records to display in a block.
    `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`.
    `int` | `getRowHeight()` Height of rows rendered by the DetailViewer.
    `java.lang.String` | `getSavedSearchId()` Optional identifier for saved searches that should be applied to this component.
    `java.lang.String` | `getSeparatorStyle()` CSS style for a separator
    `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` | `getShowEmptyField()` Whether to show the field when the value is null
    `java.lang.Boolean` | `getShowEmptyMessage()` Show `emptyMessage` when there is no data to display?
    `java.lang.Boolean` | `getShowHiddenFields()` Whether to show fields marked `hidden:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `boolean` | `getShowSavedSearchesByDS()` Whether to associate saved searches by default with the current `DataSource` of a component when a `savedSearchId` is not provided.
    `SortSpecifier[]` | `getSort()` Returns the current `SortSpecifiers` for this component.
    `java.lang.Boolean` | `getSparseFieldState()` If true, `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)` will omit state information for hidden fields by default.
    `java.lang.String` | `getStyleName()` CSS style for the component as a whole.
    `TimeDisplayFormat` | `getTimeFormatter()` Display format to use for fields specified as type 'time'.
    `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.
    `Alignment` | `getValueAlign()` Horizontal alignment of values in this viewer.
    `java.lang.String` | `getViewState()` Returns a snapshot of the current view state of this DetailViewer. This includes the field state of the DetailViewer, returned as a `DetailViewerViewState` object. This object can be passed to `setViewState()` to reset this detail viewer's view state to the current state (assuming the same data / fields are present in the detail viewer).
    `java.lang.Boolean` | `getWrapLabel()` Should the label be allowed to wrap, or be fixed to one line no matter how long
    `java.lang.Boolean` | `getWrapValues()` Whether values should be allowed to wrap by default, or should be shown on one line regardless of length.
    `void` | `invalidateCache()` Invalidate the current data cache for this databound component via a call to the dataset's `invalidateCache()` method, for example, `ResultSet.invalidateCache()`.
    `boolean` | `isExportingClientData()` Returns true if this component is currently `exporting client data`.
    `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.
    `DetailViewer` | `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.
    `DetailViewer` | `setAddFormulaFieldText(java.lang.String addFormulaFieldText)` Text for a menu item allowing users to add a formula field
    `DetailViewer` | `setAddOperation(java.lang.String addOperation)` `operationId` this component should use when performing add operations.
    `DetailViewer` | `setAddSummaryFieldText(java.lang.String addSummaryFieldText)` Text for a menu item allowing users to add a formula field
    `DetailViewer` | `setAutoFetchAsFilter(java.lang.Boolean autoFetchAsFilter)` If `DataBoundComponent.setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()`
    `DetailViewer` | `setAutoFetchData(java.lang.Boolean autoFetchData)` If true, when this component is first drawn, automatically call `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()` depending on `DataBoundComponent.getAutoFetchAsFilter()` .
    `DetailViewer` | `setAutoFetchTextMatchStyle(TextMatchStyle autoFetchTextMatchStyle)` If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `DataBoundComponent.fetchData()` call.
    `DetailViewer` | `setBlockSeparator(java.lang.String blockSeparator)` A string (HTML acceptable) that will be written to a page to separate blocks.
    `DetailViewer` | `setBlockStyle(java.lang.String blockStyle)` CSS style for each block (one record's worth of data).
    `DetailViewer` | `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`.
    `DetailViewer` | `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`.
    `DetailViewer` | `setCanPickFields(java.lang.Boolean canPickFields)` If set, right-clicking on the DetailViewer will show a context menu that offers to bring up a `FieldPicker` for configuring which fields are displayed and their order.
    `DetailViewer` | `setCellStyle(java.lang.String cellStyle)` CSS style for a normal value
    `DetailViewer` | `setConfigureFieldsText(java.lang.String configureFieldsText)` The title for the Configure Fields menu item.
    `DetailViewer` | `setData(DetailViewerRecord... data)` A single record object or an array of them, specifying data.
    `DetailViewer` | `setData(Record... data)` A single record object or an array of them, specifying data.
    `DetailViewer` | `setData(RecordList data)` A single record object or an array of them, specifying data.
    `DetailViewer` | `setDataArity(java.lang.String dataArity)` A DetailViewer is a `dataArity`:either component by default which means data population from `Canvas.dataContext` will be treated like a DynamicForm (i.e.
    `DetailViewer` | `setDataFetchMode(FetchMode dataFetchMode)` DetailViewers do not yet support paging, and will fetch and render all available records.
    `DetailViewer` | `setDataPageSize(int dataPageSize)` When using `data paging`, how many records to fetch at a time.
    `DetailViewer` | `setDataSource(DataSource dataSource)` The DataSource that this component should bind to for default fields and for performing `DataSource requests`.
    `void` | `setDataSource(DataSource dataSource, DetailViewerField... fields)` Bind to a DataSource.
    `DetailViewer` | `setDataSource(java.lang.String dataSource)` The DataSource that this component should bind to for default fields and for performing `DataSource requests`.
    `DetailViewer` | `setDateFormatter(DateDisplayFormat dateFormatter)` How should Date type values be displayed in this DetailViewer by default?
    `DetailViewer` | `setDatetimeFormatter(DateDisplayFormat datetimeFormatter)` Display format to use for fields specified as type 'datetime'.
    `DetailViewer` | `setDeepCloneOnEdit(java.lang.Boolean deepCloneOnEdit)` Before we start editing values in this DataBoundComponent, should we perform a deep clone of the underlying values.
    `static void` | `setDefaultProperties(DetailViewer detailViewerProperties)` Class level method to set the default properties of this class.
    `DetailViewer` | `setDragDataAction(DragDataAction dragDataAction)` Indicates what to do with data dragged into another DataBoundComponent.
    `DetailViewer` | `setDragDataCustomizer(DragDataCustomizer customizer)` During a drag-and-drop interaction, this method returns the set of records being dragged out of the component.
    `DetailViewer` | `setDragTrackerStyle(java.lang.String dragTrackerStyle)` CSS Style to apply to the drag tracker when dragging occurs on this component.
    `DetailViewer` | `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.
    `DetailViewer` | `setDuplicateDragMessage(java.lang.String duplicateDragMessage)` Message to show when a user attempts to transfer duplicate records into this component, and `preventDuplicates` is enabled.
    `DetailViewer` | `setEditFormulaFieldText(java.lang.String editFormulaFieldText)` Text for a menu item allowing users to edit a formula field
    `DetailViewer` | `setEditProxyConstructor(java.lang.String editProxyConstructor)` Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
    `DetailViewer` | `setEditSummaryFieldText(java.lang.String editSummaryFieldText)` Text for a menu item allowing users to edit the formatter for a field
    `DetailViewer` | `setEmptyCellValue(java.lang.String emptyCellValue)` Text to show for an empty cell
    `DetailViewer` | `setEmptyMessage(java.lang.String emptyMessage)` The string to display in the body of a detailViewer with no records.
    `DetailViewer` | `setEmptyMessageStyle(java.lang.String emptyMessageStyle)` CSS style to display this message in
    `DetailViewer` | `setExportAll(java.lang.Boolean exportAll)` Setting exportAll to true prevents the component from passing its list of fields to the export call.
    `DetailViewer` | `setExportFields(java.lang.String[] exportFields)` The list of field-names to export.
    `DetailViewer` | `setExportIncludeSummaries(java.lang.Boolean exportIncludeSummaries)` If Summary rows exist for this component, whether to include them when exporting client data.
    `DetailViewer` | `setFetchOperation(java.lang.String fetchOperation)` Operation ID this component should use when performing fetch operations.
    `DetailViewer` | `setFetchRequestProperties(DSRequest fetchRequestProperties)` If `autoFetchData` is `true`, this attribute allows the developer to declaratively specify `DSRequest` properties for the initial `fetchData()` call.
    `DetailViewer` | `setFieldPickerFieldProperties(java.lang.String... fieldPickerFieldProperties)` Names of properties on `DetailViewerField` for which the `FieldPicker` should show an editing interface, for convenience.
    `DetailViewer` | `setFields(DetailViewerField... fields)` An array of field objects, specifying the order and type of fields to display in this DetailViewer.
    `DetailViewer` | `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.
    `DetailViewer` | `setHeaderStyle(java.lang.String headerStyle)` CSS style for a header
    `DetailViewer` | `setHiliteIconHeight(java.lang.Integer hiliteIconHeight)` Height for hilite icons for this listGrid.
    `DetailViewer` | `setHiliteIconLeftPadding(int hiliteIconLeftPadding)` How much padding should there be on the left of `hilite icons` by default? Can be overridden at the field level
    `DetailViewer` | `setHiliteIconPosition(HiliteIconPosition hiliteIconPosition)` When `hiliteIcons` are present, where the hilite icon will be placed relative to the field value.
    `DetailViewer` | `setHiliteIconRightPadding(int hiliteIconRightPadding)` How much padding should there be on the right of `hilite icons` by default? Can be overridden at the field level
    `DetailViewer` | `setHiliteIcons(java.lang.String... hiliteIcons)` Specifies a list of icons that can be used in `hilites`.
    `DetailViewer` | `setHiliteIconSize(int hiliteIconSize)` Default width and height of `hilite icons` for this component.
    `DetailViewer` | `setHiliteIconWidth(java.lang.Integer hiliteIconWidth)` Width for hilite icons for this component.
    `DetailViewer` | `setHiliteProperty(java.lang.String hiliteProperty)` Marker that can be set on a record to flag that record as hilited.
    `DetailViewer` | `setHilites(Hilite[] hilites)` Accepts an array of hilite objects and applies them to this DataBoundComponent.
    `DetailViewer` | `setHiliteState(java.lang.String hiliteState)` Set the current hilites based on a hiliteState String previously returned from getHilitesState.
    `DetailViewer` | `setImplicitCriteria(Criteria implicitCriteria)` Criteria that are never shown to or edited by the user and are cumulative with any criteria provided via `DataBoundComponent.initialCriteria`, `DataBoundComponent.setCriteria()` etc.
    `java.lang.Boolean` | `setImplicitCriteria(Criteria implicitCriteria, DSCallback callback)`
    `java.lang.Boolean` | `setImplicitCriteria(Criteria criteria, DSCallback callback, java.lang.Boolean initialFetch)`
    `DetailViewer` | `setInitialCriteria(Criteria initialCriteria)` Criteria to use when `DataBoundComponent.setAutoFetchData(Boolean)` is used.
    `DetailViewer` | `setLabelAlign(Alignment labelAlign)` Horizontal alignment of value-labels in this viewer.
    `DetailViewer` | `setLabelPrefix(java.lang.String labelPrefix)` text to put before a label
    `DetailViewer` | `setLabelStyle(java.lang.String labelStyle)` CSS style for a normal detail label
    `DetailViewer` | `setLabelSuffix(java.lang.String labelSuffix)` text to put after a label
    `DetailViewer` | `setLinkTextProperty(java.lang.String linkTextProperty)` Property name on a record that will hold the link text for that record.
    `DetailViewer` | `setLoadingMessage(java.lang.String loadingMessage)` The string to display in the body of a detailViewer which is loading records.
    `DetailViewer` | `setLoadingMessageStyle(java.lang.String loadingMessageStyle)` CSS style to use for the `loadingMessage`.
    `com.smartgwt.logicalstructure.core.LogicalStructureObject` | `setLogicalStructure(com.smartgwt.logicalstructure.widgets.viewer.DetailViewerLogicalStructure s)` Setter implementing the `LogicalStructure` interface, which supports Eclipse's logical structure debugging facility.
    `DetailViewer` | `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 `DataBoundComponent.transferSelectedData(com.smartgwt.client.widgets.DataBoundComponent)`.
    `DetailViewer` | `setPrintCellStyle(java.lang.String printCellStyle)` Optional CSS style for a cell in printable HTML for this component.
    `DetailViewer` | `setPrintHeaderStyle(java.lang.String printHeaderStyle)` Optional CSS style for a header in printable HTML for this component.
    `DetailViewer` | `setPrintLabelStyle(java.lang.String printLabelStyle)` Optional CSS style for a label cell in printable HTML for this component.
    `DetailViewer` | `setProgressiveLoading(java.lang.Boolean progressiveLoading)` Indicates whether or not this component will load its data `progressively`
    `DetailViewer` | `setRecordsPerBlock(int recordsPerBlock)` The number of records to display in a block.
    `DetailViewer` | `setRemoveOperation(java.lang.String removeOperation)` `operationId` this component should use when performing remove operations.
    `DetailViewer` | `setRowHeight(int rowHeight)` Height of rows rendered by the DetailViewer.
    `DetailViewer` | `setSavedSearchId(java.lang.String savedSearchId)` Optional identifier for saved searches that should be applied to this component.
    `DetailViewer` | `setSeparatorStyle(java.lang.String separatorStyle)` CSS style for a separator
    `DetailViewer` | `setShowComplexFields(java.lang.Boolean showComplexFields)` Whether to show fields of non-atomic types when a DataBoundComponent is given a DataSource but no `component.fields`.
    `DetailViewer` | `setShowDetailFields(java.lang.Boolean showDetailFields)` Whether to show fields marked `detail:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `DetailViewer` | `setShowEmptyField(java.lang.Boolean showEmptyField)` Whether to show the field when the value is null
    `DetailViewer` | `setShowEmptyMessage(java.lang.Boolean showEmptyMessage)` Show `emptyMessage` when there is no data to display?
    `DetailViewer` | `setShowHiddenFields(java.lang.Boolean showHiddenFields)` Whether to show fields marked `hidden:true` when a DataBoundComponent is given a DataSource but no `component.fields`.
    `DetailViewer` | `setShowSavedSearchesByDS(boolean showSavedSearchesByDS)` Whether to associate saved searches by default with the current `DataSource` of a component when a `savedSearchId` is not provided.
    `DetailViewer` | `setSort(SortSpecifier... sortSpecifiers)` Sort the component on one or more fields.
    `DetailViewer` | `setSparseFieldState(java.lang.Boolean sparseFieldState)` If true, `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)` will omit state information for hidden fields by default.
    `void` | `setStyleName(java.lang.String styleName)` CSS style for the component as a whole.
    `DetailViewer` | `setTimeFormatter(TimeDisplayFormat timeFormatter)` Display format to use for fields specified as type 'time'.
    `DetailViewer` | `setTitleField(java.lang.String titleField)` Sets the best field to use for a user-visible title for an individual record from this component.
    `DetailViewer` | `setUpdateOperation(java.lang.String updateOperation)` `operationId` this component should use when performing update operations.
    `void` | `setUseAllDataSourceFields(boolean useAllDataSourceFields)` If true, the set of fields given by the "default binding" (see DataBoundComponent.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.
    `DetailViewer` | `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.
    `DetailViewer` | `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.
    `DetailViewer` | `setValueAlign(Alignment valueAlign)` Horizontal alignment of values in this viewer.
    `void` | `setViewState(java.lang.String viewState)` Reset this detail viewer's view state to match the `DetailViewerViewState` object passed in. Used to restore previous state retrieved from the detail viewer by a call to `getViewState()`.
    `DetailViewer` | `setWrapLabel(java.lang.Boolean wrapLabel)` Should the label be allowed to wrap, or be fixed to one line no matter how long
    `DetailViewer` | `setWrapValues(java.lang.Boolean wrapValues)` Whether values should be allowed to wrap by default, or should be shown on one line regardless of length.
    `void` | `transferRecords(Record[] records, Record targetRecord, java.lang.Integer index, Canvas sourceWidget, TransferRecordsCallback callback)` Transfer a list of `Record`s from another component (does not have to be a databound component) into this component.
    `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.
    `void` | `viewSelectedData(ListGrid selectionComponent)` Displays the currently selected record(s) of the ListGrid in the detailViewer.
    `void` | `viewSelectedData(java.lang.String selectionComponentID)` Displays the currently selected record(s) of the ListGrid in the detailViewer.

    - ### Methods inherited from class com.smartgwt.client.widgets.Canvas

      `addChild, addChild, addChild, addChild, addChild, addClearHandler, addClickHandler, addDoubleClickHandler, addDragMoveHandler, addDragRepositionMoveHandler, addDragRepositionStartHandler, addDragRepositionStopHandler, addDragResizeMoveHandler, addDragResizeStartHandler, addDragResizeStopHandler, addDragStartHandler, addDragStopHandler, addDropHandler, addDropMoveHandler, addDropOutHandler, addDropOverHandler, addFocusChangedHandler, addHoverHandler, addHoverHiddenHandler, addKeyDownHandler, addKeyPressHandler, addMouseDownHandler, addMouseMoveHandler, addMouseOutHandler, addMouseOverHandler, addMouseStillDownHandler, addMouseUpHandler, addMouseWheelHandler, addMovedHandler, addParentMovedHandler, addPeer, addPeer, addPeer, addPeer, addResizedHandler, addRightMouseDownHandler, addRuleContextChangedHandler, addScrolledHandler, addShowContextMenuHandler, addSnapAlignCandidate, addStyleName, addVisibilityChangedHandler, adjustForContent, animateFade, animateFade, animateFade, animateFade, animateFade, animateFade, animateFade, animateFade, animateHide, animateHide, animateHide, animateHide, animateHide, animateHide, animateHide, animateMove, animateMove, animateMove, animateMove, animateRect, animateRect, animateRect, animateRect, animateResize, animateResize, animateResize, animateResize, animateScroll, animateScroll, animateScroll, animateScroll, animateScroll, animateScroll, animateShow, animateShow, animateShow, animateShow, animateShow, animateShow, animateShow, asSGWTComponent, blur, bringToFront, clear, clearExplicitTabIndex, clickMaskUp, clickMaskUp, contains, contains, containsEvent, containsEventTarget, containsFocus, containsPoint, containsPoint, dataContextChanged, deparent, depeer, disable, enable, encloses, focus, focusAfterGroup, focusAtEnd, focusInNextTabElement, focusInPreviousTabElement, getAbsoluteLeft, getAbsoluteTop, getAccessKey, getAdaptiveHeightPriority, getAdaptiveWidthPriority, getAlwaysManageFocusNavigation, getAlwaysShowScrollbars, getAnimateAcceleration, getAnimateFadeTime, getAnimateHideAcceleration, getAnimateHideEffect, getAnimateHideTime, getAnimateMoveAcceleration, getAnimateMoveTime, getAnimateRectAcceleration, getAnimateRectTime, getAnimateResizeAcceleration, getAnimateResizeLayoutMode, getAnimateResizeTime, getAnimateScrollAcceleration, getAnimateScrollTime, getAnimateShowAcceleration, getAnimateShowEffect, getAnimateShowTime, getAnimateTime, getAppImgDir, getAriaHandleID, getAriaRole, getAriaStateDefaults, getAutoMaskComponents, getAutoParent, getAutoPopulateData, getAutoShowParent, getBackgroundColor, getBackgroundImage, getBackgroundPosition, getBackgroundRepeat, getBorder, getBorderRadius, getBottom, getById, getByJSObject, getByLocalId, getCanAcceptDrop, getCanAdaptHeight, getCanAdaptWidth, getCanDrag, getCanDragReposition, getCanDragResize, getCanDragScroll, getCanDrop, getCanDropBefore, getCanFocus, getCanHover, getCanSelectText, getCanvasAutoChild, getCanvasItem, getChildren, getChildrenResizeSnapAlign, getChildrenSnapAlign, getChildrenSnapCenterAlign, getChildrenSnapEdgeAlign, getChildrenSnapResizeToGrid, getChildrenSnapToGrid, getChildTabPosition, getClassName, getComponentMask, getComponentMaskDefaults, getContentElement, getContents, getContextMenu, getCorrectZoomOverflow, getCursor, getDataContext, getDataPath, getDefaultHeight, getDefaultWidth, getDefiningProperty, getDefiningPropertyName, getDefiningPropertyNameOptions, getDestroyed, getDestroying, getDisabled, getDisabledCursor, getDisableTouchScrollingForDrag, getDoubleClickDelay, getDragAppearance, getDragIntersectStyle, getDragMaskType, getDragMaxHeight, getDragMaxWidth, getDragMinHeight, getDragMinWidth, getDragOpacity, getDragRepositionAppearance, getDragRepositionCursor, getDragResizeAppearance, getDragScrollDelay, getDragStartDistance, getDragTarget, getDragTargetAsString, getDragType, getDropTarget, getDropTargetAsString, getDropTypes, getDropTypesAsString, getDynamicContents, getEdgeBackgroundColor, getEdgeCenterBackgroundColor, getEdgeImage, getEdgeMarginSize, getEdgeOffset, getEdgeOpacity, getEdgeShowCenter, getEdgeSize, getEditNode, getEditProxy, getElement, getElement, getEnableWhen, getEndLine, getEventEdge, getEventEdge, getExtraSpace, getFacetId, getFloatingScrollbars, getFormItemAutoChild, getForwardSVGeventsToObject, getFullDataPath, getGroupBorderCSS, getGroupLabelBackgroundColor, getGroupLabelStyleName, getGroupPadding, getGroupTitle, getHeight, getHeightAsString, getHideUsingDisplayNone, getHoverAlign, getHoverAutoDestroy, getHoverAutoFitMaxWidth, getHoverAutoFitMaxWidthAsString, getHoverAutoFitWidth, getHoverComponent, getHoverDelay, getHoverFocusKey, getHoverHeight, getHoverHTML, getHoverMoveWithMouse, getHoverOpacity, getHoverPersist, getHoverScreen, getHoverStyle, getHoverVAlign, getHoverWidth, getHoverWrap, getHSnapPosition, getHSnapPosition, getHtmlElement, getHtmlElementAsString, getHtmlPosition, getImage, getImgURL, getImgURL, getInnerContentHeight, getInnerContentWidth, getInnerHeight, getInnerWidth, getIsGroup, getIsPrinting, getIsRuleScope, getIsSnapAlignCandidate, getKeepInParentRect, getLayoutAlign, getLeaveGroupLabelSpace, getLeavePageSpace, getLeft, getLeftAsString, getLocalId, getLocateByIDOnly, getLocateChildrenBy, getLocateChildrenType, getLocatePeersBy, getLocatePeersType, getLocatorName, getMargin, getMasterCanvas, getMasterElement, getMatchElement, getMatchElementHeight, getMatchElementWidth, getMaxHeight, getMaxWidth, getMaxZoomOverflowError, getMenuConstructor, getMinHeight, getMinNonEdgeSize, getMinWidth, getMomentumScrollMinSpeed, getMouseStillDownDelay, getMouseStillDownInitialDelay, getName, getNativeAutoHideScrollbars, getNextZIndex, getNoDoubleClicks, getNoDropCursor, getOffsetHeight, getOffsetWidth, getOffsetX, getOffsetY, getOpacity, getOuterElement, getOverflow, getPadding, getPageBottom, getPageLeft, getPageRect, getPageRight, getPageTop, getPaletteDefaults, getPanelContainer, getParentCanvas, getParentElement, getPeers, getPendingMarkerStyle, getPendingMarkerVisible, getPercentBox, getPercentSource, getPersistentMatchElement, getPointerSettings, getPointerTarget, getPointerTargetAsString, getPosition, getPrefix, getPrintChildrenAbsolutelyPositioned, getPrintHTML, getPrintHTML, getPrintStyleName, getPrompt, getProportionalResizeModifiers, getProportionalResizing, getReceiveScrollbarEvents, getRect, getRedrawOnResize, getResizeBarTarget, getResizeFrom, getRight, getRuleContext, getRuleContext, getRuleScope, getScrollbarSize, getScrollBottom, getScrollHeight, getScrollLeft, getScrollRight, getScrollTop, getScrollWidth, getShadowColor, getShadowDepth, getShadowHOffset, getShadowImage, getShadowOffset, getShadowSoftness, getShadowSpread, getShadowVOffset, getShouldPrint, getShowCustomScrollbars, getShowDragShadow, getShowEdges, getShowHover, getShowHoverComponents, getShowPointer, getShowResizeBar, getShowShadow, getShowSnapGrid, getShrinkElementOnHide, getSizeMayChangeOnRedraw, getSkinImgDir, getSnapAlignCandidates, getSnapAlignCenterLineStyle, getSnapAlignEdgeLineStyle, getSnapAxis, getSnapEdge, getSnapGridLineProperties, getSnapGridStyle, getSnapHDirection, getSnapHGap, getSnapOffsetLeft, getSnapOffsetTop, getSnapOnDrop, getSnapPosition, getSnapPosition, getSnapResizeToAlign, getSnapResizeToGrid, getSnapTo, getSnapToAlign, getSnapToCenterAlign, getSnapToEdgeAlign, getSnapToGrid, getSnapVDirection, getSnapVGap, getStartLine, getTabIndex, getTestDataContext, getTestInstance, getTitle, getTooltip, getTop, getTopAsString, getTopElement, getUISummary, getUpdateTabPositionOnDraw, getUpdateTabPositionOnReparent, getUseBackMask, getUseCSSShadow, getUseDragMask, getUseImageForSVG, getUseNativeDrag, getUseOpacityFilter, getUseTouchScrolling, getValuesManager, getValuesManagerAsString, getViewportHeight, getViewportWidth, getVisibility, getVisibleHeight, getVisibleWhen, getVisibleWidth, getVSnapPosition, getVSnapPosition, getWidth, getWidthAsString, getWorkflows, getZIndex, getZIndex, handleHover, hide, hideClickMask, hideClickMask, hideComponentMask, hideComponentMask, hideContextMenu, imgHTML, imgHTML, imgHTML, initComplete, intersects, isDirty, isDisabled, isFocused, isVisible, keyUp, layoutChildren, linkHTML, linkHTML, linkHTML, linkHTML, linkHTML, linkHTML, markForDestroy, markForRedraw, markForRedraw, moveAbove, moveBelow, moveBy, moveTo, onAttach, onDetach, onInit, pageScrollDown, pageScrollUp, parentResized, placeNear, placeNear, placeNear, print, print, print, print, printComponents, provideRuleContext, provideRuleContext, redraw, redraw, registerFontScaledPaddingStyles, removeChild, removeChild, removePeer, removePeer, removeRuleContext, removeSnapAlignCandidate, resizeAutoChildAttributes, resizeBy, resizeControls, resizeControlsTo, resizeFonts, resizeFonts, resizeFonts, resizeFontsTo, resizeIcons, resizePadding, resizePadding, resizeTo, resizeTo, revealChild, revealChild, scrollBy, scrollByPercent, scrollTo, scrollTo, scrollTo, scrollTo, scrollTo, scrollToBottom, scrollToLeft, scrollToPercent, scrollToRight, scrollToTop, sendToBack, setAccessKey, setAdaptHeightByCustomizer, setAdaptiveHeightPriority, setAdaptiveWidthPriority, setAdaptWidthByCustomizer, setAlign, setAllowExternalFilters, setAlwaysManageFocusNavigation, setAlwaysShowScrollbars, setAnimateAcceleration, setAnimateFadeTime, setAnimateHideAcceleration, setAnimateHideEffect, setAnimateHideTime, setAnimateMoveAcceleration, setAnimateMoveTime, setAnimateRectAcceleration, setAnimateRectTime, setAnimateResizeAcceleration, setAnimateResizeLayoutMode, setAnimateResizeTime, setAnimateScrollAcceleration, setAnimateScrollTime, setAnimateShowAcceleration, setAnimateShowEffect, setAnimateShowTime, setAnimateTime, setAppImgDir, setAriaRole, setAriaState, setAutoChildConstructor, setAutoChildProperties, setAutoChildProperties, setAutoChildProperties, setAutoChildProperties, setAutoChildVisibility, setAutoHeight, setAutoMaskComponents, setAutoParent, setAutoPopulateData, setAutoResizeAutoChildAttributes, setAutoResizeIcons, setAutoShowParent, setAutoWidth, setBackgroundColor, setBackgroundImage, setBackgroundPosition, setBackgroundRepeat, setBorder, setBorderRadius, setBottom, setCanAcceptDrop, setCanAdaptHeight, setCanAdaptWidth, setCanDrag, setCanDragReposition, setCanDragResize, setCanDragScroll, setCanDrop, setCanDropBefore, setCanFocus, setCanHover, setCanSelectText, setChildren, setChildrenResizeSnapAlign, setChildrenSnapAlign, setChildrenSnapCenterAlign, setChildrenSnapEdgeAlign, setChildrenSnapResizeToGrid, setChildrenSnapToGrid, setComponentMaskDefaults, setContents, setContextMenu, setCorrectZoomOverflow, setCursor, setDataContext, setDataPath, setDefaultHeight, setDefaultPageSpace, setDefaultProperties, setDefaultShowCustomScrollbars, setDefaultWidth, setDefiningProperty, setDefiningPropertyNameOptions, setDisabled, setDisabledCursor, setDisableTouchScrollingForDrag, setDoubleClickDelay, setDragAppearance, setDragIntersectStyle, setDragMaskType, setDragMaxHeight, setDragMaxWidth, setDragMinHeight, setDragMinWidth, setDragOpacity, setDragRepositionAppearance, setDragRepositionCursor, setDragResizeAppearance, setDragScrollDelay, setDragStartDistance, setDragTarget, setDragTarget, setDragType, setDropTarget, setDropTarget, setDropTypes, setDropTypes, setDynamicContents, setEdgeBackgroundColor, setEdgeCenterBackgroundColor, setEdgeImage, setEdgeMarginSize, setEdgeOffset, setEdgeOpacity, setEdgeShowCenter, setEdgeSize, setEditMode, setEditMode, setEditMode, setElement, setEnableWhen, setEndLine, setExtraSpace, setFacetId, setFloatingScrollbars, setForwardSVGeventsToObject, setGroupBorderCSS, setGroupLabelBackgroundColor, setGroupLabelStyleName, setGroupPadding, setGroupTitle, setHeight, setHeight, setHeight, setHeight100, setHideUsingDisplayNone, setHoverAlign, setHoverAutoDestroy, setHoverAutoFitMaxWidth, setHoverAutoFitMaxWidth, setHoverAutoFitWidth, setHoverDelay, setHoverFocusKey, setHoverHeight, setHoverMoveWithMouse, setHoverOpacity, setHoverPersist, setHoverScreen, setHoverStyle, setHoverVAlign, setHoverWidth, setHoverWrap, setHtmlElement, setHtmlElement, setHtmlPosition, setImage, setImage, setInitHandler, setIsGroup, setIsRuleScope, setIsSnapAlignCandidate, setKeepInParentRect, setKeepInParentRect, setKeepInParentRect, setLayoutAlign, setLayoutAlign, setLeaveGroupLabelSpace, setLeavePageSpace, setLeft, setLeft, setLocateByIDOnly, setLocateChildrenBy, setLocateChildrenType, setLocatePeersBy, setLocatePeersType, setLocatorName, setLocatorParent, setLocatorParent, setLogicalStructure, setMargin, setMatchElement, setMatchElementHeight, setMatchElementWidth, setMaxHeight, setMaxWidth, setMaxZoomOverflowError, setMenuConstructor, setMinHeight, setMinNonEdgeSize, setMinWidth, setMomentumScrollMinSpeed, setMouseStillDownDelay, setMouseStillDownInitialDelay, setName, setNativeAutoHideScrollbars, setNeverUseFilters, setNoDoubleClicks, setNoDropCursor, setOpacity, setOverflow, setPadding, setPageLeft, setPageTop, setPanelContainer, setParentCanvas, setParentElement, setPeers, setPendingMarkerStyle, setPendingMarkerVisible, setPercentBox, setPercentSource, setPersistentMatchElement, setPointerSettings, setPointerTarget, setPosition, setPrefix, setPrintChildrenAbsolutelyPositioned, setPrintStyleName, setPrompt, setProportionalResizeModifiers, setProportionalResizing, setReceiveScrollbarEvents, setRect, setRect, setRedrawOnResize, setRelativeTabPosition, setResizeBarTarget, setResizeFrom, setResizeFrom, setRight, setRuleScope, setScrollbarConstructor, setScrollbarSize, setShadowColor, setShadowDepth, setShadowHOffset, setShadowImage, setShadowOffset, setShadowSoftness, setShadowSpread, setShadowVOffset, setShouldPrint, setShowCustomScrollbars, setShowDragShadow, setShowEdges, setShowHover, setShowHoverComponents, setShowPointer, setShowResizeBar, setShowShadow, setShowSnapGrid, setShrinkElementOnHide, setSizeMayChangeOnRedraw, setSkinImgDir, setSmoothFade, setSnapAlignCandidates, setSnapAlignCenterLineStyle, setSnapAlignEdgeLineStyle, setSnapAxis, setSnapEdge, setSnapGridLineProperties, setSnapGridStyle, setSnapHDirection, setSnapHGap, setSnapOffsetLeft, setSnapOffsetTop, setSnapOnDrop, setSnapResizeToAlign, setSnapResizeToGrid, setSnapTo, setSnapToAlign, setSnapToCenterAlign, setSnapToEdgeAlign, setSnapToGrid, setSnapVDirection, setSnapVGap, setStartLine, setTabIndex, setTestDataContext, setTitle, setTooltip, setTop, setTop, setUpdateTabPositionOnDraw, setUpdateTabPositionOnReparent, setUseBackMask, setUseCSSShadow, setUseDragMask, setUseImageForSVG, setUseNativeDrag, setUseOpacityFilter, setUseTouchScrolling, setValuesManager, setValuesManager, setVisibility, setVisible, setVisibleWhen, setWidth, setWidth, setWidth, setWidth100, setWorkflows, setZIndex, shouldDragScroll, show, showClickMask, showComponentMask, showComponentMask, showNextTo, showNextTo, showNextTo, showNextTo, showPendingMarker, showPrintPreview, showPrintPreview, showPrintPreview, showPrintPreview, showRecursively, startDebuggingOverflow, stopDebuggingOverflow, updateChildTabPosition, updateChildTabPositions, updateEditNode, updateHover, updateHover, updateShadow, updateTabPositionForDraw, visibleAtPoint, willAcceptDrop`

    - ### Methods inherited from class com.smartgwt.client.widgets.BaseWidget

      `addDrawHandler, addDynamicProperty, addDynamicProperty, addDynamicProperty, addDynamicProperty, applyFactoryProperties, clearDynamicProperty, completeCreation, destroy, doAddHandler, doInit, doOnRender, draw, equals, error, errorIfNotCreated, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDateArray, getAttributeAsDouble, getAttributeAsElement, getAttributeAsFloat, getAttributeAsFloatArray, getAttributeAsInt, getAttributeAsIntArray, getAttributeAsJavaScriptObject, getAttributeAsMap, getAttributeAsObject, getAttributeAsRecord, getAttributeAsString, getAttributeAsStringArray, getConfig, getDOM, getHandlerCount, getID, getInnerHTML, getJsObj, getOrCreateJsObj, getRef, getScClassName, hasAutoAssignedID, hasDynamicProperty, hashCode, initNativeObject, internalSetID, internalSetID, isConfigOnly, isCreated, isDrawn, isFactoryCreated, onBind, onDestroy, onDraw, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setConfig, setConfigOnly, setDefaultProperties, setDragTracker, setFactoryCreated, setID, setJavaScriptObject, setLogicalStructure, setLogicalStructure, setNullProperty, setPosition, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setScClassName, toString`

    - ### Methods inherited from class com.google.gwt.user.client.ui.Widget

      `addAttachHandler, addBitlessDomHandler, addDomHandler, addHandler, asWidget, asWidgetOrNull, createHandlerManager, delegateEvent, doAttachChildren, doDetachChildren, fireEvent, getLayoutData, getParent, isAttached, isOrWasAttached, onBrowserEvent, onLoad, onUnload, removeFromParent, setLayoutData, sinkEvents, unsinkEvents`

    - ### Methods inherited from class com.google.gwt.user.client.ui.UIObject

      `addStyleDependentName, ensureDebugId, ensureDebugId, ensureDebugId, getStyleElement, getStyleName, getStylePrimaryName, getStylePrimaryName, isVisible, onEnsureDebugId, removeStyleDependentName, removeStyleName, resolvePotentialElement, setElement, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setVisible, sinkBitlessEvent`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface com.smartgwt.client.widgets.DataBoundComponent

      `getOrCreateJsObj`

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

      `fireEvent`

- - ### Constructor Detail

    - #### DetailViewer

          public DetailViewer()

    - #### DetailViewer

          public DetailViewer(com.google.gwt.core.client.JavaScriptObject jsObj)

  - ### Method Detail

    - #### getOrCreateRef

          public static DetailViewer getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)

    - #### changeAutoChildDefaults

          public static void changeAutoChildDefaults(java.lang.String autoChildName,
                                                     Canvas defaults)

      Changes the defaults for Canvas AutoChildren named `autoChildName`.
      Parameters:
        `autoChildName` - name of an AutoChild to customize the defaults for.
        `defaults` - Canvas defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties. For usage tips on this param, see `SGWTProperties`.
      See Also:
        `AutoChildUsage`

    - #### changeAutoChildDefaults

          public static void changeAutoChildDefaults(java.lang.String autoChildName,
                                                     FormItem defaults)

      Changes the defaults for FormItem AutoChildren named `autoChildName`.
      Parameters:
        `autoChildName` - name of an AutoChild to customize the defaults for.
        `defaults` - FormItem defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties. For usage tips on this param, see `SGWTProperties`.
      See Also:
        `AutoChildUsage`

    - #### create

          protected com.google.gwt.core.client.JavaScriptObject create()

      Overrides:
        `create` in class `Canvas`

    - #### setBlockSeparator

          public DetailViewer setBlockSeparator(java.lang.String blockSeparator)

      A string (HTML acceptable) that will be written to a page to separate blocks.
      Parameters:
        `blockSeparator` - New blockSeparator value. Default value is "<br><br>"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `HTMLString`, `Appearance overview and related methods`

    - #### getBlockSeparator

          public java.lang.String getBlockSeparator()

      A string (HTML acceptable) that will be written to a page to separate blocks.
      Returns:
        Current blockSeparator value. Default value is "<br><br>"
      See Also:
        `HTMLString`, `Appearance overview and related methods`

    - #### setBlockStyle

          public DetailViewer setBlockStyle(java.lang.String blockStyle)

      CSS style for each block (one record's worth of data).
      Parameters:
        `blockStyle` - New blockStyle value. Default value is "detailBlock"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### getBlockStyle

          public java.lang.String getBlockStyle()

      CSS style for each block (one record's worth of data).
      Returns:
        Current blockStyle value. Default value is "detailBlock"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### setCanPickFields

          public DetailViewer setCanPickFields(java.lang.Boolean canPickFields)
                                        throws java.lang.IllegalStateException

      If set, right-clicking on the DetailViewer will show a context menu that offers to bring up a `FieldPicker` for configuring which fields are displayed and their order.
      Parameters:
        `canPickFields` - New canPickFields value. Default value is false
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getCanPickFields

          public java.lang.Boolean getCanPickFields()

      If set, right-clicking on the DetailViewer will show a context menu that offers to bring up a `FieldPicker` for configuring which fields are displayed and their order.
      Returns:
        Current canPickFields value. Default value is false

    - #### setCellStyle

          public DetailViewer setCellStyle(java.lang.String cellStyle)

      CSS style for a normal value
      Parameters:
        `cellStyle` - New cellStyle value. Default value is "detail"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### getCellStyle

          public java.lang.String getCellStyle()

      CSS style for a normal value
      Returns:
        Return the CSS class for a cell. Default implementation calls `getCellStyle()` on the field if defined, otherwise returns `this.cellStyle`. Default value is "detail"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### setConfigureFieldsText

          public DetailViewer setConfigureFieldsText(java.lang.String configureFieldsText)
                                              throws java.lang.IllegalStateException

      The title for the Configure Fields menu item.
      Parameters:
        `configureFieldsText` - New configureFieldsText value. Default value is "Configure Fields..."
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getConfigureFieldsText

          public java.lang.String getConfigureFieldsText()

      The title for the Configure Fields menu item.
      Returns:
        Current configureFieldsText value. Default value is "Configure Fields..."

    - #### setData

          public DetailViewer setData(DetailViewerRecord... data)

      A single record object or an array of them, specifying data. Note that DetailViewers do not detect changes to the data array (in other words they will not automatically re-draw when the data provided via this property is altered).
      If this method is called after the component has been drawn/initialized: Sets the data displayed by this detail viewer.
      Parameters:
        `data` - new data to be displayed. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getData

          public DetailViewerRecord[] getData()

      A single record object or an array of them, specifying data. Note that DetailViewers do not detect changes to the data array (in other words they will not automatically re-draw when the data provided via this property is altered).
      Returns:
        Current data value. Default value is null

    - #### setData

          public DetailViewer setData(Record... data)

      A single record object or an array of them, specifying data. Note that DetailViewers do not detect changes to the data array (in other words they will not automatically re-draw when the data provided via this property is altered).
      If this method is called after the component has been drawn/initialized: Sets the data displayed by this detail viewer.
      Parameters:
        `data` - new data to be displayed. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getDataAsRecordArray

          public Record[] getDataAsRecordArray()

      A single record object or an array of them, specifying data. Note that DetailViewers do not detect changes to the data array (in other words they will not automatically re-draw when the data provided via this property is altered).
      Returns:
        Current data value. Default value is null

    - #### setData

          public DetailViewer setData(RecordList data)

      A single record object or an array of them, specifying data. Note that DetailViewers do not detect changes to the data array (in other words they will not automatically re-draw when the data provided via this property is altered).
      If this method is called after the component has been drawn/initialized: Sets the data displayed by this detail viewer.
      Parameters:
        `data` - new data to be displayed. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getDataAsRecordList

          public RecordList getDataAsRecordList()

      A single record object or an array of them, specifying data. Note that DetailViewers do not detect changes to the data array (in other words they will not automatically re-draw when the data provided via this property is altered).
      Returns:
        Current data value. Default value is null

    - #### setDataArity

          public DetailViewer setDataArity(java.lang.String dataArity)

      A DetailViewer is a `dataArity`:either component by default which means data population from `Canvas.dataContext` will be treated like a DynamicForm (i.e. single). However, by explicitly marking an instance of DetailViewer as `dataArity:multiple`, `dataContext` population will be treated similarly to a ListGrid.

      Note : This is an advanced setting

      Parameters:
        `dataArity` - New dataArity value. Default value is "either"
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getDataArity

          public java.lang.String getDataArity()

      A DetailViewer is a `dataArity`:either component by default which means data population from `Canvas.dataContext` will be treated like a DynamicForm (i.e. single). However, by explicitly marking an instance of DetailViewer as `dataArity:multiple`, `dataContext` population will be treated similarly to a ListGrid.
      Returns:
        Current dataArity value. Default value is "either"

    - #### setDataFetchMode

          public DetailViewer setDataFetchMode(FetchMode dataFetchMode)

      DetailViewers do not yet support paging, and will fetch and render all available records.
      Specified by:
        `setDataFetchMode` in interface `DataBoundComponent`
      Parameters:
        `dataFetchMode` - New dataFetchMode value. Default value is "basic"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `DataBinding`

    - #### getDataFetchMode

          public FetchMode getDataFetchMode()

      DetailViewers do not yet support paging, and will fetch and render all available records.
      Specified by:
        `getDataFetchMode` in interface `DataBoundComponent`
      Returns:
        Current dataFetchMode value. Default value is "basic"
      See Also:
        `DataBinding`

    - #### setDataSource

          public DetailViewer setDataSource(DataSource dataSource)

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

      Can be specified as either a DataSource instance or the String ID of a DataSource.

      Specified by:
        `setDataSource` in interface `DataBoundComponent`
      Parameters:
        `dataSource` - New dataSource value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `DataBinding`, DataSource fields Example

    - #### setDataSource

          public DetailViewer setDataSource(java.lang.String dataSource)

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

      Can be specified as either a DataSource instance or the String ID of a DataSource.

      Specified by:
        `setDataSource` in interface `DataBoundComponent`
      Parameters:
        `dataSource` - New dataSource value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `DataBinding`, DataSource fields Example

    - #### setDateFormatter

          public DetailViewer setDateFormatter(DateDisplayFormat dateFormatter)

      How should Date type values be displayed in this DetailViewer by default?

      This property specifies the default DateDisplayFormat to apply to Date values displayed in this grid for all fields except those of `type "time"` (See also `timeFormatter`).
      If `datetimeFormatter` is specified, that will be applied by default to fields of type `"datetime"`.

      Note that if `DetailViewerField.dateFormatter` or `DetailViewerField.timeFormatter` are specified those properties will take precedence over the component level settings.

      If unset, date values will be formatted according to the system wide `normal display format`.

      Parameters:
        `dateFormatter` - New dateFormatter value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getDateFormatter

          public DateDisplayFormat getDateFormatter()

      How should Date type values be displayed in this DetailViewer by default?

      This property specifies the default DateDisplayFormat to apply to Date values displayed in this grid for all fields except those of `type "time"` (See also `timeFormatter`).
      If `datetimeFormatter` is specified, that will be applied by default to fields of type `"datetime"`.

      Note that if `DetailViewerField.dateFormatter` or `DetailViewerField.timeFormatter` are specified those properties will take precedence over the component level settings.

      If unset, date values will be formatted according to the system wide `normal display format`.

      Returns:
        Current dateFormatter value. Default value is null

    - #### setDatetimeFormatter

          public DetailViewer setDatetimeFormatter(DateDisplayFormat datetimeFormatter)

      Display format to use for fields specified as type 'datetime'. Default is to use the system-wide default long ("normal") date time format, configured via `DateUtil.setNormalDatetimeDisplayFormat()`. Specify any valid `DateDisplayFormat` to change the display format for datetimes used by this viewer.

      May also be specified at the field level via `DetailViewerField.dateFormatter`

      Parameters:
        `datetimeFormatter` - New datetimeFormatter value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `ListGridField.setDateFormatter(com.smartgwt.client.types.DateDisplayFormat)`, `Appearance overview and related methods`

    - #### getDatetimeFormatter

          public DateDisplayFormat getDatetimeFormatter()

      Display format to use for fields specified as type 'datetime'. Default is to use the system-wide default long ("normal") date time format, configured via `DateUtil.setNormalDatetimeDisplayFormat()`. Specify any valid `DateDisplayFormat` to change the display format for datetimes used by this viewer.

      May also be specified at the field level via `DetailViewerField.dateFormatter`

      Returns:
        Current datetimeFormatter value. Default value is null
      See Also:
        `ListGridField.getDateFormatter()`, `Appearance overview and related methods`

    - #### setEditProxyConstructor

          public DetailViewer setEditProxyConstructor(java.lang.String editProxyConstructor)
                                               throws java.lang.IllegalStateException

      Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
      Overrides:
        `setEditProxyConstructor` in class `Canvas`
      Parameters:
        `editProxyConstructor` - New editProxyConstructor value. Default value is "DetailViewerEditProxy"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created
      See Also:
        `SCClassName`

    - #### getEditProxyConstructor

          public java.lang.String getEditProxyConstructor()

      Default class used to construct the `EditProxy` for this component when the component is `first placed into edit mode`.
      Overrides:
        `getEditProxyConstructor` in class `Canvas`
      Returns:
        Current editProxyConstructor value. Default value is "DetailViewerEditProxy"
      See Also:
        `SCClassName`

    - #### setEmptyCellValue

          public DetailViewer setEmptyCellValue(java.lang.String emptyCellValue)

      Text to show for an empty cell

      Note : This is an advanced setting

      Parameters:
        `emptyCellValue` - New emptyCellValue value. Default value is "&nbsp;"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `HTMLString`, `Appearance overview and related methods`

    - #### getEmptyCellValue

          public java.lang.String getEmptyCellValue()

      Text to show for an empty cell
      Returns:
        Current emptyCellValue value. Default value is "&nbsp;"
      See Also:
        `HTMLString`, `Appearance overview and related methods`

    - #### setEmptyMessage

          public DetailViewer setEmptyMessage(java.lang.String emptyMessage)

      The string to display in the body of a detailViewer with no records.
      Parameters:
        `emptyMessage` - New emptyMessage value. Default value is "No items to display."
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `HTMLString`

    - #### getEmptyMessage

          public java.lang.String getEmptyMessage()

      The string to display in the body of a detailViewer with no records.
      Returns:
        Current emptyMessage value. Default value is "No items to display."
      See Also:
        `HTMLString`

    - #### setEmptyMessageStyle

          public DetailViewer setEmptyMessageStyle(java.lang.String emptyMessageStyle)

      CSS style to display this message in

      Note : This is an advanced setting

      Parameters:
        `emptyMessageStyle` - New emptyMessageStyle value. Default value is "normal"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`

    - #### getEmptyMessageStyle

          public java.lang.String getEmptyMessageStyle()

      CSS style to display this message in
      Returns:
        Current emptyMessageStyle value. Default value is "normal"
      See Also:
        `CSSStyleName`

    - #### setFetchRequestProperties

          public DetailViewer setFetchRequestProperties(DSRequest fetchRequestProperties)
                                                 throws java.lang.IllegalStateException

      If `autoFetchData` is `true`, this attribute allows the developer to declaratively specify `DSRequest` properties for the initial `fetchData()` call.

      Note that any properties governing more specific request attributes for the initial fetch (such as `autoFetchTextMatchStyle` and initial sort specifiers) will be applied on top of this properties block.

      Parameters:
        `fetchRequestProperties` - New fetchRequestProperties value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created
      See Also:
        `DataBinding`

    - #### getFetchRequestProperties

          public DSRequest getFetchRequestProperties()

      If `autoFetchData` is `true`, this attribute allows the developer to declaratively specify `DSRequest` properties for the initial `fetchData()` call.

      Note that any properties governing more specific request attributes for the initial fetch (such as `autoFetchTextMatchStyle` and initial sort specifiers) will be applied on top of this properties block.

      Returns:
        Current fetchRequestProperties value. Default value is null
      See Also:
        `DataBinding`

    - #### getFieldIdProperty

          public java.lang.String getFieldIdProperty()
                                              throws java.lang.IllegalStateException

      Deprecated. It is not possible to change this value; changing this attribute did not actually cause the framework to use a different property for the ID of a field.
      Name of the field in the DetailViewerRecord which specifies the data property for that record.

      Note : This method should be called only after the widget has been rendered.

      Returns:
        Current fieldIdProperty value. Default value is "name"
      Throws:
        `java.lang.IllegalStateException` - if this widget has not yet been rendered.

    - #### setFieldPickerFieldProperties

          public DetailViewer setFieldPickerFieldProperties(java.lang.String... fieldPickerFieldProperties)
                                                     throws java.lang.IllegalStateException

      Names of properties on `DetailViewerField` for which the `FieldPicker` should show an editing interface, for convenience.

      For example, specify ["decimalPad", "decimalPrecision"] to allow end users to modify `DetailViewerField.decimalPad` and `DetailViewerField.decimalPrecision` respectively.

      Parameters:
        `fieldPickerFieldProperties` - New fieldPickerFieldProperties value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getFieldPickerFieldProperties

          public java.lang.String[] getFieldPickerFieldProperties()

      Names of properties on `DetailViewerField` for which the `FieldPicker` should show an editing interface, for convenience.

      For example, specify ["decimalPad", "decimalPrecision"] to allow end users to modify `DetailViewerField.decimalPad` and `DetailViewerField.decimalPrecision` respectively.

      Returns:
        Current fieldPickerFieldProperties value. Default value is null

    - #### getFieldPickerWindow

          public FieldPickerWindow getFieldPickerWindow()
                                                 throws java.lang.IllegalStateException

      Instance of `FieldPickerWindow` used if `canPickFields` is set.

      This component is an AutoChild named "fieldPickerWindow". For an overview of how to use and configure AutoChildren, see `Using AutoChildren`.

      Returns:
        Current fieldPickerWindow value. Default value is null
      Throws:
        `java.lang.IllegalStateException` - if this widget has not yet been rendered.

    - #### setFields

          public DetailViewer setFields(DetailViewerField... fields)

      An array of field objects, specifying the order and type of fields to display in this DetailViewer. In DetailViewers, the fields specify rows.
      Parameters:
        `fields` - New fields value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getFields

          public DetailViewerField[] getFields()

      An array of field objects, specifying the order and type of fields to display in this DetailViewer. In DetailViewers, the fields specify rows.
      Returns:
        Current fields value. Default value is null

    - #### setHeaderStyle

          public DetailViewer setHeaderStyle(java.lang.String headerStyle)

      CSS style for a header
      Parameters:
        `headerStyle` - New headerStyle value. Default value is "detailHeader"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### getHeaderStyle

          public java.lang.String getHeaderStyle()

      CSS style for a header
      Returns:
        Current headerStyle value. Default value is "detailHeader"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### setHiliteIconHeight

          public DetailViewer setHiliteIconHeight(java.lang.Integer hiliteIconHeight)

      Height for hilite icons for this listGrid. Overrides `hiliteIconSize`. Can be overridden at the field level
      Parameters:
        `hiliteIconHeight` - New hiliteIconHeight value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Hiliting`

    - #### getHiliteIconHeight

          public java.lang.Integer getHiliteIconHeight()

      Height for hilite icons for this listGrid. Overrides `hiliteIconSize`. Can be overridden at the field level
      Returns:
        Current hiliteIconHeight value. Default value is null
      See Also:
        `Hiliting`

    - #### setHiliteIconLeftPadding

          public DetailViewer setHiliteIconLeftPadding(int hiliteIconLeftPadding)

      How much padding should there be on the left of `hilite icons` by default? Can be overridden at the field level
      Parameters:
        `hiliteIconLeftPadding` - New hiliteIconLeftPadding value. Default value is 2
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Hiliting`

    - #### getHiliteIconLeftPadding

          public int getHiliteIconLeftPadding()

      How much padding should there be on the left of `hilite icons` by default? Can be overridden at the field level
      Returns:
        Current hiliteIconLeftPadding value. Default value is 2
      See Also:
        `Hiliting`

    - #### setHiliteIconPosition

          public DetailViewer setHiliteIconPosition(HiliteIconPosition hiliteIconPosition)
                                             throws java.lang.IllegalStateException

      When `hiliteIcons` are present, where the hilite icon will be placed relative to the field value. See `HiliteIconPosition`. Can be overridden at the field level.
      Parameters:
        `hiliteIconPosition` - New hiliteIconPosition value. Default value is "before"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created
      See Also:
        `Hiliting`

    - #### getHiliteIconPosition

          public HiliteIconPosition getHiliteIconPosition()

      When `hiliteIcons` are present, where the hilite icon will be placed relative to the field value. See `HiliteIconPosition`. Can be overridden at the field level.
      Returns:
        Current hiliteIconPosition value. Default value is "before"
      See Also:
        `Hiliting`

    - #### setHiliteIconRightPadding

          public DetailViewer setHiliteIconRightPadding(int hiliteIconRightPadding)

      How much padding should there be on the right of `hilite icons` by default? Can be overridden at the field level
      Parameters:
        `hiliteIconRightPadding` - New hiliteIconRightPadding value. Default value is 2
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Hiliting`

    - #### getHiliteIconRightPadding

          public int getHiliteIconRightPadding()

      How much padding should there be on the right of `hilite icons` by default? Can be overridden at the field level
      Returns:
        Current hiliteIconRightPadding value. Default value is 2
      See Also:
        `Hiliting`

    - #### setHiliteIcons

          public DetailViewer setHiliteIcons(java.lang.String... hiliteIcons)
                                      throws java.lang.IllegalStateException

      Specifies a list of icons that can be used in `hilites`.

      `hiliteIcons` should be specified as an Array of `SCImgURL`. When present, the hilite editing interface shown when `DataBoundComponent.editHilites()` is called will offer the user a drop down for picking one of these icons when defining either a simple or advanced hilite rule.

      If the user picks an icon, the created hiliting rule will have `Hilite.icon` set to the chosen icon. `DataBoundComponent.hiliteIconPosition` controls where the icon will appear for that field -- the default is that it appears in front of the normal cell content. This can also be overridden at the field level.

      Parameters:
        `hiliteIcons` - New hiliteIcons value. Default value is ["[SKINIMG]/Dialog/notify.png", "[SKINIMG]/Dialog/warn.png", "[SKINIMG]/actions/approve.png"]
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created
      See Also:
        `Hiliting`

    - #### getHiliteIcons

          public java.lang.String[] getHiliteIcons()

      Specifies a list of icons that can be used in `hilites`.

      `hiliteIcons` should be specified as an Array of `SCImgURL`. When present, the hilite editing interface shown when `DataBoundComponent.editHilites()` is called will offer the user a drop down for picking one of these icons when defining either a simple or advanced hilite rule.

      If the user picks an icon, the created hiliting rule will have `Hilite.icon` set to the chosen icon. `DataBoundComponent.hiliteIconPosition` controls where the icon will appear for that field -- the default is that it appears in front of the normal cell content. This can also be overridden at the field level.

      Returns:
        Current hiliteIcons value. Default value is ["[SKINIMG]/Dialog/notify.png", "[SKINIMG]/Dialog/warn.png", "[SKINIMG]/actions/approve.png"]
      See Also:
        `Hiliting`

    - #### setHiliteIconSize

          public DetailViewer setHiliteIconSize(int hiliteIconSize)

      Default width and height of `hilite icons` for this component. Can be overridden at the component level via explicit `hiliteIconWidth` and `hiliteIconHeight`, or at the field level via `hiliteIconSize`, `hiliteIconWidth` and `hiliteIconHeight`
      Parameters:
        `hiliteIconSize` - New hiliteIconSize value. Default value is 12
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `setHiliteIconWidth(java.lang.Integer)`, `setHiliteIconHeight(java.lang.Integer)`, `DetailViewerField.setHiliteIconSize(java.lang.Integer)`, `Hiliting`

    - #### getHiliteIconSize

          public int getHiliteIconSize()

      Default width and height of `hilite icons` for this component. Can be overridden at the component level via explicit `hiliteIconWidth` and `hiliteIconHeight`, or at the field level via `hiliteIconSize`, `hiliteIconWidth` and `hiliteIconHeight`
      Returns:
        Current hiliteIconSize value. Default value is 12
      See Also:
        `getHiliteIconWidth()`, `getHiliteIconHeight()`, `DetailViewerField.getHiliteIconSize()`, `Hiliting`

    - #### setHiliteIconWidth

          public DetailViewer setHiliteIconWidth(java.lang.Integer hiliteIconWidth)

      Width for hilite icons for this component. Overrides `hiliteIconSize`. Can be overridden at the field level.
      Parameters:
        `hiliteIconWidth` - New hiliteIconWidth value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Hiliting`

    - #### getHiliteIconWidth

          public java.lang.Integer getHiliteIconWidth()

      Width for hilite icons for this component. Overrides `hiliteIconSize`. Can be overridden at the field level.
      Returns:
        Current hiliteIconWidth value. Default value is null
      See Also:
        `Hiliting`

    - #### setLabelAlign

          public DetailViewer setLabelAlign(Alignment labelAlign)

      Horizontal alignment of value-labels in this viewer. If unspecified, defaults to `"left"` when in RTL mode and `"right"` otherwise.
      Parameters:
        `labelAlign` - New labelAlign value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getLabelAlign

          public Alignment getLabelAlign()

      Horizontal alignment of value-labels in this viewer. If unspecified, defaults to `"left"` when in RTL mode and `"right"` otherwise.
      Returns:
        Current labelAlign value. Default value is null

    - #### setLabelPrefix

          public DetailViewer setLabelPrefix(java.lang.String labelPrefix)

      text to put before a label
      Parameters:
        `labelPrefix` - New labelPrefix value. Default value is ""
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `HTMLString`

    - #### getLabelPrefix

          public java.lang.String getLabelPrefix()

      text to put before a label
      Returns:
        Current labelPrefix value. Default value is ""
      See Also:
        `HTMLString`

    - #### setLabelStyle

          public DetailViewer setLabelStyle(java.lang.String labelStyle)

      CSS style for a normal detail label
      Parameters:
        `labelStyle` - New labelStyle value. Default value is "detailLabel"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### getLabelStyle

          public java.lang.String getLabelStyle()

      CSS style for a normal detail label
      Returns:
        Current labelStyle value. Default value is "detailLabel"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### setLabelSuffix

          public DetailViewer setLabelSuffix(java.lang.String labelSuffix)

      text to put after a label
      Parameters:
        `labelSuffix` - New labelSuffix value. Default value is ":"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `HTMLString`

    - #### getLabelSuffix

          public java.lang.String getLabelSuffix()

      text to put after a label
      Returns:
        Current labelSuffix value. Default value is ":"
      See Also:
        `HTMLString`

    - #### setLinkTextProperty

          public DetailViewer setLinkTextProperty(java.lang.String linkTextProperty)

      Property name on a record that will hold the link text for that record.

      This property is configurable to avoid possible collision with data values in the record.

      Use `DetailViewerField.linkTextProperty` if you have more than one link field and the fields' records do not use the same property to store the linkText.

      Parameters:
        `linkTextProperty` - New linkTextProperty value. Default value is "linkText"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `DetailViewerField.setLinkText(java.lang.String)`, `DetailViewerField.setLinkTextProperty(java.lang.String)`

    - #### getLinkTextProperty

          public java.lang.String getLinkTextProperty()

      Property name on a record that will hold the link text for that record.

      This property is configurable to avoid possible collision with data values in the record.

      Use `DetailViewerField.linkTextProperty` if you have more than one link field and the fields' records do not use the same property to store the linkText.

      Returns:
        Current linkTextProperty value. Default value is "linkText"
      See Also:
        `DetailViewerField.getLinkText()`, `DetailViewerField.getLinkTextProperty()`

    - #### setLoadingMessage

          public DetailViewer setLoadingMessage(java.lang.String loadingMessage)

      The string to display in the body of a detailViewer which is loading records. Use `"${loadingImage}"` to include `a loading image`.
      Parameters:
        `loadingMessage` - New loadingMessage value. Default value is "&nbsp;${loadingImage}"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `HTMLString`

    - #### getLoadingMessage

          public java.lang.String getLoadingMessage()

      The string to display in the body of a detailViewer which is loading records. Use `"${loadingImage}"` to include `a loading image`.
      Returns:
        Current loadingMessage value. Default value is "&nbsp;${loadingImage}"
      See Also:
        `HTMLString`

    - #### setLoadingMessageStyle

          public DetailViewer setLoadingMessageStyle(java.lang.String loadingMessageStyle)

      CSS style to use for the `loadingMessage`.

      Note : This is an advanced setting

      Parameters:
        `loadingMessageStyle` - New loadingMessageStyle value. Default value is "normal"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`

    - #### getLoadingMessageStyle

          public java.lang.String getLoadingMessageStyle()

      CSS style to use for the `loadingMessage`.
      Returns:
        Current loadingMessageStyle value. Default value is "normal"
      See Also:
        `CSSStyleName`

    - #### setPrintCellStyle

          public DetailViewer setPrintCellStyle(java.lang.String printCellStyle)

      Optional CSS style for a cell in printable HTML for this component. If unset `cellStyle` will be used for printing as well as normal presentation.
      Parameters:
        `printCellStyle` - New printCellStyle value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Printing`

    - #### getPrintCellStyle

          public java.lang.String getPrintCellStyle()

      Optional CSS style for a cell in printable HTML for this component. If unset `cellStyle` will be used for printing as well as normal presentation.
      Returns:
        Current printCellStyle value. Default value is null
      See Also:
        `CSSStyleName`, `Printing`

    - #### setPrintHeaderStyle

          public DetailViewer setPrintHeaderStyle(java.lang.String printHeaderStyle)

      Optional CSS style for a header in printable HTML for this component. If unset `headerStyle` will be used for printing as well as normal presentation.
      Parameters:
        `printHeaderStyle` - New printHeaderStyle value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Printing`

    - #### getPrintHeaderStyle

          public java.lang.String getPrintHeaderStyle()

      Optional CSS style for a header in printable HTML for this component. If unset `headerStyle` will be used for printing as well as normal presentation.
      Returns:
        Current printHeaderStyle value. Default value is null
      See Also:
        `CSSStyleName`, `Printing`

    - #### setPrintLabelStyle

          public DetailViewer setPrintLabelStyle(java.lang.String printLabelStyle)

      Optional CSS style for a label cell in printable HTML for this component. If unset `labelStyle` will be used for printing as well as normal presentation.
      Parameters:
        `printLabelStyle` - New printLabelStyle value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Printing`

    - #### getPrintLabelStyle

          public java.lang.String getPrintLabelStyle()

      Optional CSS style for a label cell in printable HTML for this component. If unset `labelStyle` will be used for printing as well as normal presentation.
      Returns:
        Current printLabelStyle value. Default value is null
      See Also:
        `CSSStyleName`, `Printing`

    - #### setRecordsPerBlock

          public DetailViewer setRecordsPerBlock(int recordsPerBlock)

      The number of records to display in a block. A block is a horizontal row on a page containing one or more records, as specified by the value of recordsPerBlock. The height of a block is equal to the height of a single record. The default setting of 1 causes each record to appear by itself in a vertical row. Setting recordsPerBlock to 2 would cause records to appear side by side in groups of two. Use a value of "*" to indicate all records.
      Parameters:
        `recordsPerBlock` - New recordsPerBlock value. Default value is 1
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Appearance overview and related methods`

    - #### getRecordsPerBlock

          public int getRecordsPerBlock()

      The number of records to display in a block. A block is a horizontal row on a page containing one or more records, as specified by the value of recordsPerBlock. The height of a block is equal to the height of a single record. The default setting of 1 causes each record to appear by itself in a vertical row. Setting recordsPerBlock to 2 would cause records to appear side by side in groups of two. Use a value of "*" to indicate all records.
      Returns:
        Current recordsPerBlock value. Default value is 1
      See Also:
        `Appearance overview and related methods`

    - #### setRowHeight

          public DetailViewer setRowHeight(int rowHeight)

      Height of rows rendered by the DetailViewer. Acts as a minimum - the DetailViewer never clips values. This attribute can be set as null.
      Parameters:
        `rowHeight` - New rowHeight value. Default value is 19
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getRowHeight

          public int getRowHeight()

      Height of rows rendered by the DetailViewer. Acts as a minimum - the DetailViewer never clips values. This attribute can be set as null.
      Returns:
        Current rowHeight value. Default value is 19

    - #### setSeparatorStyle

          public DetailViewer setSeparatorStyle(java.lang.String separatorStyle)

      CSS style for a separator
      Parameters:
        `separatorStyle` - New separatorStyle value. Default value is "detail"
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### getSeparatorStyle

          public java.lang.String getSeparatorStyle()

      CSS style for a separator
      Returns:
        Current separatorStyle value. Default value is "detail"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### setShowDetailFields

          public DetailViewer setShowDetailFields(java.lang.Boolean showDetailFields)
                                           throws java.lang.IllegalStateException

      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.

      Specified by:
        `setShowDetailFields` in interface `DataBoundComponent`
      Parameters:
        `showDetailFields` - New showDetailFields value. Default value is true
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created
      See Also:
        `DataBinding`

    - #### getShowDetailFields

          public 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.

      Specified by:
        `getShowDetailFields` in interface `DataBoundComponent`
      Returns:
        Current showDetailFields value. Default value is true
      See Also:
        `DataBinding`

    - #### setShowEmptyField

          public DetailViewer setShowEmptyField(java.lang.Boolean showEmptyField)

      Whether to show the field when the value is null

      Note : This is an advanced setting

      Parameters:
        `showEmptyField` - New showEmptyField value. Default value is true
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Appearance overview and related methods`

    - #### getShowEmptyField

          public java.lang.Boolean getShowEmptyField()

      Whether to show the field when the value is null
      Returns:
        Current showEmptyField value. Default value is true
      See Also:
        `Appearance overview and related methods`

    - #### setShowEmptyMessage

          public DetailViewer setShowEmptyMessage(java.lang.Boolean showEmptyMessage)

      Show `emptyMessage` when there is no data to display?

      Note : This is an advanced setting

      Parameters:
        `showEmptyMessage` - New showEmptyMessage value. Default value is true
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `setEmptyMessage(java.lang.String)`

    - #### getShowEmptyMessage

          public java.lang.Boolean getShowEmptyMessage()

      Show `emptyMessage` when there is no data to display?
      Returns:
        Current showEmptyMessage value. Default value is true
      See Also:
        `getEmptyMessage()`

    - #### setStyleName

          public void setStyleName(java.lang.String styleName)

      CSS style for the component as a whole.
      Overrides:
        `setStyleName` in class `Canvas`
      Parameters:
        `styleName` - New styleName value. Default value is "detailViewer"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### getStyleName

          public java.lang.String getStyleName()

      CSS style for the component as a whole.
      Overrides:
        `getStyleName` in class `Canvas`
      Returns:
        Current styleName value. Default value is "detailViewer"
      See Also:
        `CSSStyleName`, `Appearance overview and related methods`

    - #### setTimeFormatter

          public DetailViewer setTimeFormatter(TimeDisplayFormat timeFormatter)

      Display format to use for fields specified as type 'time'. May also be specified at the field level via `DetailViewerField.timeFormatter`.
      If unset, time fields will be formatted based on the system wide String
      Parameters:
        `timeFormatter` - New timeFormatter value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls
      See Also:
        `Appearance overview and related methods`

    - #### getTimeFormatter

          public TimeDisplayFormat getTimeFormatter()

      Display format to use for fields specified as type 'time'. May also be specified at the field level via `DetailViewerField.timeFormatter`.
      If unset, time fields will be formatted based on the system wide String
      Returns:
        Current timeFormatter value. Default value is null
      See Also:
        `Appearance overview and related methods`

    - #### setValueAlign

          public DetailViewer setValueAlign(Alignment valueAlign)

      Horizontal alignment of values in this viewer. If unspecified, defaults to `"right"` when in RTL mode and `"left"` otherwise.
      Parameters:
        `valueAlign` - New valueAlign value. Default value is null
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getValueAlign

          public Alignment getValueAlign()

      Horizontal alignment of values in this viewer. If unspecified, defaults to `"right"` when in RTL mode and `"left"` otherwise.
      Returns:
        Current valueAlign value. Default value is null

    - #### setWrapLabel

          public DetailViewer setWrapLabel(java.lang.Boolean wrapLabel)

      Should the label be allowed to wrap, or be fixed to one line no matter how long
      Parameters:
        `wrapLabel` - New wrapLabel value. Default value is false
      Returns:
        `DetailViewer` instance, for chaining setter calls

    - #### getWrapLabel

          public java.lang.Boolean getWrapLabel()

      Should the label be allowed to wrap, or be fixed to one line no matter how long
      Returns:
        Current wrapLabel value. Default value is false

    - #### setWrapValues

          public DetailViewer setWrapValues(java.lang.Boolean wrapValues)
                                     throws java.lang.IllegalStateException

      Whether values should be allowed to wrap by default, or should be shown on one line regardless of length.
      Parameters:
        `wrapValues` - New wrapValues value. Default value is true
      Returns:
        `DetailViewer` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getWrapValues

          public java.lang.Boolean getWrapValues()

      Whether values should be allowed to wrap by default, or should be shown on one line regardless of length.
      Returns:
        Current wrapValues value. Default value is true

    - #### emptyMessageHTML

          public java.lang.String emptyMessageHTML()

      Return the message to show if the component has no data. Default implementation returns a centered `emptyMessage` or "&nbsp;" if showEmptyMessage is false. If the component has no data because the browser is offline, we instead display the `DataBoundComponent.offlineMessage` or "&nbsp;" if showOfflineMessage is false
      Returns:
        HTML output

    - #### exportClientData

          public void exportClientData()

      Exports this component's data with client-side formatters applied, so is suitable for direct display to users. See `ListGrid.exportClientData()` for details of the general requirements and restrictions when exporting client data.

      The following notes apply when exporting client data from DetailViewers:

      - Data is exported in "grid" format, with each record shown in a single row and each column representing a single field. This is quite different from the way DetailViewers display records in the browser

      If your detailViewer has custom formatters, formatted values will be exported by default, with HTML normalized to text where possible. Since some levels of HTML normalizing aren't possible, this may result in missing or incorrect export values. In this case, you have two possible approaches:

      - Set `exportRawValues` on the field. This will export the raw underlying value of the field; your formatter will not be called
      - Have your formatter call `isExportingClientData()` and perform whatever alternative formatting you require if that method returns true
      See Also:
        `ListGrid.exportClientData()`

    - #### exportClientData

          public void exportClientData(DSRequest requestProperties)

      See Also:
        `exportClientData()`

    - #### exportClientData

          public void exportClientData(DSRequest requestProperties,
                                       RPCCallback callback)

      Exports this component's data with client-side formatters applied, so is suitable for direct display to users. See `ListGrid.exportClientData()` for details of the general requirements and restrictions when exporting client data.

      The following notes apply when exporting client data from DetailViewers:

      - Data is exported in "grid" format, with each record shown in a single row and each column representing a single field. This is quite different from the way DetailViewers display records in the browser

      If your detailViewer has custom formatters, formatted values will be exported by default, with HTML normalized to text where possible. Since some levels of HTML normalizing aren't possible, this may result in missing or incorrect export values. In this case, you have two possible approaches:

      - Set `exportRawValues` on the field. This will export the raw underlying value of the field; your formatter will not be called
      - Have your formatter call `isExportingClientData()` and perform whatever alternative formatting you require if that method returns true
      Parameters:
        `requestProperties` - Request properties for the export. Note that specifying `exportData` on the request properties allows the developer to pass in an explicit data set to export.
        `callback` - Optional callback. If you specify `exportToClient`: false in the request properties, this callback will fire after export completes. Otherwise the callback will fire right before the download request is made to the server.
      See Also:
        `ListGrid.exportClientData()`

    - #### fetchRelatedData

          public void fetchRelatedData(ListGridRecord record,
                                       Canvas schema)

      Based on the relationship between the DataSource this component is bound to and the DataSource specified as the "schema" argument, call fetchData() to retrieve records in this data set that are related to the passed-in record.

      Relationships between DataSources are declared via `DataSourceField.foreignKey`.

      For example, given two related DataSources "orders" and "orderItems", where we want to fetch the "orderItems" that belong to a given "order". "orderItems" should declare a field that is a `foreignKey` to the "orders" table (for example, it might be named "orderId" with foreignKey="orders.id"). Then, to load the records related to a given "order", call fetchRelatedData() on the component bound to "orderItems", pass the "orders" DataSource as the "schema" and pass a record from the "orders" DataSource as the "record" argument.

      Note: When you expect a large number of records to be returned it is not recommended to display these in the DetailViewer as it doesn't have the same level of support for large datasets as the `ListGrid`.

      Parameters:
        `record` - DataSource record
        `schema` - schema of the DataSource record, or DataBoundComponent already bound to that schema
      See Also:
        `DataBound Component Methods`

    - #### fetchRelatedData

          public void fetchRelatedData(ListGridRecord record,
                                       Canvas schema,
                                       DSCallback callback)

      See Also:
        `fetchRelatedData(com.smartgwt.client.widgets.grid.ListGridRecord, com.smartgwt.client.widgets.Canvas)`

    - #### fetchRelatedData

          public void fetchRelatedData(ListGridRecord record,
                                       Canvas schema,
                                       DSCallback callback,
                                       DSRequest requestProperties)

      Based on the relationship between the DataSource this component is bound to and the DataSource specified as the "schema" argument, call fetchData() to retrieve records in this data set that are related to the passed-in record.

      Relationships between DataSources are declared via `DataSourceField.foreignKey`.

      For example, given two related DataSources "orders" and "orderItems", where we want to fetch the "orderItems" that belong to a given "order". "orderItems" should declare a field that is a `foreignKey` to the "orders" table (for example, it might be named "orderId" with foreignKey="orders.id"). Then, to load the records related to a given "order", call fetchRelatedData() on the component bound to "orderItems", pass the "orders" DataSource as the "schema" and pass a record from the "orders" DataSource as the "record" argument.

      Note: When you expect a large number of records to be returned it is not recommended to display these in the DetailViewer as it doesn't have the same level of support for large datasets as the `ListGrid`.

      Parameters:
        `record` - DataSource record
        `schema` - schema of the DataSource record, or DataBoundComponent already bound to that schema
        `callback` - callback to invoke on completion
        `requestProperties` - additional properties to set on the DSRequest that will be issued
      See Also:
        `DataBound Component Methods`

    - #### fieldIsVisible

          public boolean fieldIsVisible(java.lang.String field)

      Check whether a field is currently visible
      Parameters:
        `field` - field to be checked
      Returns:
        true if the field is currently visible, false otherwise.

    - #### getViewState

          public java.lang.String getViewState()

      Returns a snapshot of the current view state of this DetailViewer.
      This includes the field state of the DetailViewer, returned as a `DetailViewerViewState` object.
      This object can be passed to `setViewState()` to reset this detail viewer's view state to the current state (assuming the same data / fields are present in the detail viewer).
      Returns:
        current view state for the detail viewer. See `DetailViewerViewState`
      See Also:
        `DetailViewerViewState`, `setViewState(java.lang.String)`

    - #### isExportingClientData

          public boolean isExportingClientData()

      Returns true if this component is currently `exporting client data`. This method can be called from custom cell formatters if you need to return a different formatted value for an export than for a live detailViewer
      Returns:
        returns true if this component is currently exporting client data
      See Also:
        `ListGrid.exportClientData()`

    - #### setViewState

          public void setViewState(java.lang.String viewState)

      Reset this detail viewer's view state to match the `DetailViewerViewState` object passed in.
      Used to restore previous state retrieved from the detail viewer by a call to `getViewState()`.
      Parameters:
        `viewState` - Object describing the desired view state for the detail viewer. See `DetailViewerViewState`
      See Also:
        `getViewState()`, `DetailViewerViewState`

    - #### setDefaultProperties

          public static void setDefaultProperties(DetailViewer detailViewerProperties)

      Class level method to set the default properties of this class. If set, then all existing and subsequently created instances of this class will automatically have default properties corresponding to the properties set on the SmartGWT class instance passed to this function before its underlying SmartClient JS object was created. This is a powerful feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default properties of this class. Can also be used for skinning / styling purposes.

      Note: This method is intended for setting default attributes only and will affect all instances of the underlying class (including those automatically generated in JavaScript). This method should not be used to apply standard EventHandlers or override methods for a class - use a custom subclass instead. Calling this method after instances have been created can result in undefined behavior, since it bypasses any setters and a class instance may have already examined a particular property and not be expecting any changes through this route.

      Parameters:
        `detailViewerProperties` - properties that should be used as new defaults when instances of this class are created
      See Also:
        `SGWTProperties`

    - #### setUseAllDataSourceFields

          public void setUseAllDataSourceFields(boolean useAllDataSourceFields)

      If true, the set of fields given by the "default binding" (see DataBoundComponent.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

    - #### viewSelectedData

          public void viewSelectedData(ListGrid selectionComponent)

      Displays the currently selected record(s) of the ListGrid in the detailViewer.
      Parameters:
        `selectionComponent` - the ListGrid whose currently selected record(s) is/are to be edited

    - #### viewSelectedData

          public void viewSelectedData(java.lang.String selectionComponentID)

      Displays the currently selected record(s) of the ListGrid in the detailViewer.
      Parameters:
        `selectionComponentID` - the ID of a ListGrid whose currently selected record(s) is/are to be edited

    - #### setDataSource

          public void setDataSource(DataSource dataSource,
                                    DetailViewerField... fields)

      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 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, pass them to setDataSource().

      Parameters:
        `dataSource` -
        `fields` -

    - #### getDataAsRecord

          public Record[] getDataAsRecord()

      Deprecated. in favor of `getDataAsRecordArray()`.
      See `getDataAsRecordArray()`.

    - #### setDataPageSize

          public DetailViewer setDataPageSize(int dataPageSize)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setDataPageSize` in interface `DataBoundComponent`
      Parameters:
        `dataPageSize` - dataPageSize Default value is 0
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      See Also:
        `Databinding overview and related methods`

    - #### getDataPageSize

          public int getDataPageSize()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getDataPageSize` in interface `DataBoundComponent`
      Returns:
        int
      See Also:
        `Databinding overview and related methods`

    - #### setUseAllDataSourceFields

          public DetailViewer setUseAllDataSourceFields(java.lang.Boolean useAllDataSourceFields)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setUseAllDataSourceFields` in interface `DataBoundComponent`
      Parameters:
        `useAllDataSourceFields` - useAllDataSourceFields Default value is false
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getUseAllDataSourceFields

          public java.lang.Boolean getUseAllDataSourceFields()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getUseAllDataSourceFields` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setSparseFieldState

          public DetailViewer setSparseFieldState(java.lang.Boolean sparseFieldState)

      Description copied from interface: `DataBoundComponent`
      If true, `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)` will omit state information for hidden fields by default.
      Specified by:
        `setSparseFieldState` in interface `DataBoundComponent`
      Parameters:
        `sparseFieldState` - sparseFieldState Default value is false
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getSparseFieldState

          public java.lang.Boolean getSparseFieldState()

      Description copied from interface: `DataBoundComponent`
      If true, `ListGrid.getFieldState()` and `ListGrid.setFieldState(java.lang.String)` will omit state information for hidden fields by default.
      Specified by:
        `getSparseFieldState` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setShowHiddenFields

          public DetailViewer setShowHiddenFields(java.lang.Boolean showHiddenFields)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setShowHiddenFields` in interface `DataBoundComponent`
      Parameters:
        `showHiddenFields` - showHiddenFields Default value is false
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getShowHiddenFields

          public java.lang.Boolean getShowHiddenFields()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getShowHiddenFields` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setShowComplexFields

          public DetailViewer setShowComplexFields(java.lang.Boolean showComplexFields)

      Description copied from interface: `DataBoundComponent`
      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

      Specified by:
        `setShowComplexFields` in interface `DataBoundComponent`
      Parameters:
        `showComplexFields` - showComplexFields Default value is true
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getShowComplexFields

          public java.lang.Boolean getShowComplexFields()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getShowComplexFields` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setFetchOperation

          public DetailViewer setFetchOperation(java.lang.String fetchOperation)

      Description copied from interface: `DataBoundComponent`
      Operation ID this component should use when performing fetch operations.
      Specified by:
        `setFetchOperation` in interface `DataBoundComponent`
      Parameters:
        `fetchOperation` - fetchOperation Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getFetchOperation

          public java.lang.String getFetchOperation()

      Description copied from interface: `DataBoundComponent`
      Operation ID this component should use when performing fetch operations.
      Specified by:
        `getFetchOperation` in interface `DataBoundComponent`
      Returns:
        String

    - #### setUpdateOperation

          public DetailViewer setUpdateOperation(java.lang.String updateOperation)

      Description copied from interface: `DataBoundComponent`
      `operationId` this component should use when performing update operations.
      Specified by:
        `setUpdateOperation` in interface `DataBoundComponent`
      Parameters:
        `updateOperation` - Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      See Also:
        `Operations overview and related methods`

    - #### getUpdateOperation

          public java.lang.String getUpdateOperation()

      Description copied from interface: `DataBoundComponent`
      `operationId` this component should use when performing update operations.
      Specified by:
        `getUpdateOperation` in interface `DataBoundComponent`
      Returns:
        String
      See Also:
        `Operations overview and related methods`

    - #### setAddOperation

          public DetailViewer setAddOperation(java.lang.String addOperation)

      Description copied from interface: `DataBoundComponent`
      `operationId` this component should use when performing add operations.
      Specified by:
        `setAddOperation` in interface `DataBoundComponent`
      Parameters:
        `addOperation` - Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      See Also:
        `Operations overview and related methods`

    - #### getAddOperation

          public java.lang.String getAddOperation()

      Description copied from interface: `DataBoundComponent`
      `operationId` this component should use when performing add operations.
      Specified by:
        `getAddOperation` in interface `DataBoundComponent`
      Returns:
        String
      See Also:
        `Operations overview and related methods`

    - #### setRemoveOperation

          public DetailViewer setRemoveOperation(java.lang.String removeOperation)

      Description copied from interface: `DataBoundComponent`
      `operationId` this component should use when performing remove operations.
      Specified by:
        `setRemoveOperation` in interface `DataBoundComponent`
      Parameters:
        `removeOperation` - Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      See Also:
        `Operations overview and related methods`

    - #### getRemoveOperation

          public java.lang.String getRemoveOperation()

      Description copied from interface: `DataBoundComponent`
      `operationId` this component should use when performing remove operations.
      Specified by:
        `getRemoveOperation` in interface `DataBoundComponent`
      Returns:
        String
      See Also:
        `Operations overview and related methods`

    - #### setExportFields

          public DetailViewer setExportFields(java.lang.String[] exportFields)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setExportFields` in interface `DataBoundComponent`
      Parameters:
        `exportFields` - exportFields Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getExportFields

          public java.lang.String[] getExportFields()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getExportFields` in interface `DataBoundComponent`
      Returns:
        the list of field-names to export.

    - #### setExportAll

          public DetailViewer setExportAll(java.lang.Boolean exportAll)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setExportAll` in interface `DataBoundComponent`
      Parameters:
        `exportAll` - exportAll Default value is false
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getExportAll

          public java.lang.Boolean getExportAll()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getExportAll` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setExportIncludeSummaries

          public DetailViewer setExportIncludeSummaries(java.lang.Boolean exportIncludeSummaries)

      Description copied from interface: `DataBoundComponent`
      If Summary rows exist for this component, whether to include them when exporting client data. Defaults to true if not set
      Specified by:
        `setExportIncludeSummaries` in interface `DataBoundComponent`
      Parameters:
        `exportIncludeSummaries` - exportIncludeSummaries Default value is true
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getExportIncludeSummaries

          public java.lang.Boolean getExportIncludeSummaries()

      Description copied from interface: `DataBoundComponent`
      If Summary rows exist for this component, whether to include them when exporting client data. Defaults to true if not set
      Specified by:
        `getExportIncludeSummaries` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setPreventDuplicates

          public DetailViewer setPreventDuplicates(java.lang.Boolean preventDuplicates)
                                            throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `DataBoundComponent.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.

      Specified by:
        `setPreventDuplicates` in interface `DataBoundComponent`
      Parameters:
        `preventDuplicates` - preventDuplicates Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getPreventDuplicates

          public java.lang.Boolean getPreventDuplicates()

      Description copied from interface: `DataBoundComponent`
      If set, detect and prevent duplicate records from being transferred to this component, either via drag and drop or via `DataBoundComponent.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.

      Specified by:
        `getPreventDuplicates` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setDuplicateDragMessage

          public DetailViewer setDuplicateDragMessage(java.lang.String duplicateDragMessage)
                                               throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `setDuplicateDragMessage` in interface `DataBoundComponent`
      Parameters:
        `duplicateDragMessage` - duplicateDragMessage Default value is "Duplicates not allowed"
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getDuplicateDragMessage

          public java.lang.String getDuplicateDragMessage()

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `getDuplicateDragMessage` in interface `DataBoundComponent`
      Returns:
        String

    - #### setAddDropValues

          public DetailViewer setAddDropValues(java.lang.Boolean addDropValues)

      Description copied from interface: `DataBoundComponent`
      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, `DataBoundComponent.getDropValues()` will be called for every databound item dropped on this grid, and an update performed on the item

      Specified by:
        `setAddDropValues` in interface `DataBoundComponent`
      Parameters:
        `addDropValues` - addDropValues Default value is true
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getAddDropValues

          public java.lang.Boolean getAddDropValues()

      Description copied from interface: `DataBoundComponent`
      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, `DataBoundComponent.getDropValues()` will be called for every databound item dropped on this grid, and an update performed on the item

      Specified by:
        `getAddDropValues` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setDropValues

          public DetailViewer setDropValues(java.util.Map dropValues)

      Description copied from interface: `DataBoundComponent`
      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

      Specified by:
        `setDropValues` in interface `DataBoundComponent`
      Parameters:
        `dropValues` - dropValues Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getDropValues

          public java.util.Map getDropValues()

      Description copied from interface: `DataBoundComponent`
      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

      Specified by:
        `getDropValues` in interface `DataBoundComponent`
      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.

    - #### setProgressiveLoading

          public DetailViewer setProgressiveLoading(java.lang.Boolean progressiveLoading)

      Indicates whether or not this component will load its data `progressively`
      Parameters:
        `progressiveLoading` -
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      See Also:
        `ProgressiveLoading`, `DataSource.setProgressiveLoading(java.lang.Boolean)`

    - #### getProgressiveLoading

          public java.lang.Boolean getProgressiveLoading()

      Indicates whether or not this component will load its data `progressively`
      Returns:
      See Also:
        `ProgressiveLoading`, `DataSource.getProgressiveLoading()`

    - #### setUseFlatFields

          public DetailViewer setUseFlatFields(java.lang.Boolean useFlatFields)
                                        throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setUseFlatFields` in interface `DataBoundComponent`
      Parameters:
        `useFlatFields` - useFlatFields Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getUseFlatFields

          public java.lang.Boolean getUseFlatFields()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getUseFlatFields` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setHiliteProperty

          public DetailViewer setHiliteProperty(java.lang.String hiliteProperty)

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `setHiliteProperty` in interface `DataBoundComponent`
      Parameters:
        `hiliteProperty` - hiliteProperty Default value is "_hilite"
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getHiliteProperty

          public java.lang.String getHiliteProperty()

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `getHiliteProperty` in interface `DataBoundComponent`
      Returns:
        String

    - #### editFields

          public void editFields()

      Shows a FieldPicker interface allowing end-users to rearrange the order and visibiility of the fields in the associated DataBoundComponent.

    - #### editHilites

          public void editHilites()

      Description copied from interface: `DataBoundComponent`
      Shows a HiliteEditor interface allowing end-users to edit the data-hilites currently in use by this DataBoundComponent.
      Specified by:
        `editHilites` in interface `DataBoundComponent`

    - #### getHiliteState

          public java.lang.String getHiliteState()

      Description copied from interface: `DataBoundComponent`
      Get the current hilites encoded as a String, for saving.
      Specified by:
        `getHiliteState` in interface `DataBoundComponent`
      Returns:
        the hilite state

    - #### setHiliteState

          public DetailViewer setHiliteState(java.lang.String hiliteState)

      Description copied from interface: `DataBoundComponent`
      Set the current hilites based on a hiliteState String previously returned from getHilitesState.
      Specified by:
        `setHiliteState` in interface `DataBoundComponent`
      Parameters:
        `hiliteState` - hilites state encoded as a String
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### setHilites

          public DetailViewer setHilites(Hilite[] hilites)

      Description copied from interface: `DataBoundComponent`
      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.

      NOTE: This is only supported on `ListGrid` for now.

      Specified by:
        `setHilites` in interface `DataBoundComponent`
      Parameters:
        `hilites` - array of hilite objects
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getHilites

          public Hilite[] getHilites()

      Description copied from interface: `DataBoundComponent`
      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().
      Specified by:
        `getHilites` in interface `DataBoundComponent`
      Returns:
        array of hilite objects

    - #### setDragDataAction

          public DetailViewer setDragDataAction(DragDataAction dragDataAction)

      Description copied from interface: `DataBoundComponent`
      Indicates what to do with data dragged into another DataBoundComponent. See DragDataAction type for details.
      Specified by:
        `setDragDataAction` in interface `DataBoundComponent`
      Parameters:
        `dragDataAction` - dragDataAction Default value is Canvas.MOVE
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getDragDataAction

          public DragDataAction getDragDataAction()

      Description copied from interface: `DataBoundComponent`
      Indicates what to do with data dragged into another DataBoundComponent. See DragDataAction type for details.
      Specified by:
        `getDragDataAction` in interface `DataBoundComponent`
      Returns:
        DragDataAction

    - #### setDragTrackerStyle

          public DetailViewer setDragTrackerStyle(java.lang.String dragTrackerStyle)

      Description copied from interface: `DataBoundComponent`
      CSS Style to apply to the drag tracker when dragging occurs on this component.
      Specified by:
        `setDragTrackerStyle` in interface `DataBoundComponent`
      Parameters:
        `dragTrackerStyle` - dragTrackerStyle Default value is "gridDragTracker"
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getDragTrackerStyle

          public java.lang.String getDragTrackerStyle()

      Description copied from interface: `DataBoundComponent`
      CSS Style to apply to the drag tracker when dragging occurs on this component.
      Specified by:
        `getDragTrackerStyle` in interface `DataBoundComponent`
      Returns:
        String

    - #### setCanAddFormulaFields

          public DetailViewer setCanAddFormulaFields(java.lang.Boolean canAddFormulaFields)

      Description copied from interface: `DataBoundComponent`
      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)`.

      Specified by:
        `setCanAddFormulaFields` in interface `DataBoundComponent`
      Parameters:
        `canAddFormulaFields` - canAddFormulaFields Default value is false
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### addSummaryField

          public void addSummaryField()

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `addSummaryField` in interface `DataBoundComponent`

    - #### addFormulaField

          public void addFormulaField()

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `addFormulaField` in interface `DataBoundComponent`

    - #### getCanAddFormulaFields

          public java.lang.Boolean getCanAddFormulaFields()

      Description copied from interface: `DataBoundComponent`
      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)`.

      Specified by:
        `getCanAddFormulaFields` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setAddFormulaFieldText

          public DetailViewer setAddFormulaFieldText(java.lang.String addFormulaFieldText)

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to add a formula field
      Specified by:
        `setAddFormulaFieldText` in interface `DataBoundComponent`
      Parameters:
        `addFormulaFieldText` - addFormulaFieldText Default value is "Add formula column..."
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getAddFormulaFieldText

          public java.lang.String getAddFormulaFieldText()

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to add a formula field
      Specified by:
        `getAddFormulaFieldText` in interface `DataBoundComponent`
      Returns:
        String

    - #### setEditFormulaFieldText

          public DetailViewer setEditFormulaFieldText(java.lang.String editFormulaFieldText)

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to edit a formula field
      Specified by:
        `setEditFormulaFieldText` in interface `DataBoundComponent`
      Parameters:
        `editFormulaFieldText` - editFormulaFieldText Default value is "Edit formula..."
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getEditFormulaFieldText

          public java.lang.String getEditFormulaFieldText()

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to edit a formula field
      Specified by:
        `getEditFormulaFieldText` in interface `DataBoundComponent`
      Returns:
        String

    - #### setCanAddSummaryFields

          public DetailViewer setCanAddSummaryFields(java.lang.Boolean canAddSummaryFields)

      Description copied from interface: `DataBoundComponent`
      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)`.

      Specified by:
        `setCanAddSummaryFields` in interface `DataBoundComponent`
      Parameters:
        `canAddSummaryFields` - canAddSummaryFields Default value is false
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getCanAddSummaryFields

          public java.lang.Boolean getCanAddSummaryFields()

      Description copied from interface: `DataBoundComponent`
      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)`.

      Specified by:
        `getCanAddSummaryFields` in interface `DataBoundComponent`
      Returns:
        Boolean

    - #### setAddSummaryFieldText

          public DetailViewer setAddSummaryFieldText(java.lang.String addSummaryFieldText)

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to add a formula field
      Specified by:
        `setAddSummaryFieldText` in interface `DataBoundComponent`
      Parameters:
        `addSummaryFieldText` - addSummaryFieldText Default value is "Add summary column..."
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getAddSummaryFieldText

          public java.lang.String getAddSummaryFieldText()

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to add a formula field
      Specified by:
        `getAddSummaryFieldText` in interface `DataBoundComponent`
      Returns:
        String

    - #### setEditSummaryFieldText

          public DetailViewer setEditSummaryFieldText(java.lang.String editSummaryFieldText)

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to edit the formatter for a field
      Specified by:
        `setEditSummaryFieldText` in interface `DataBoundComponent`
      Parameters:
        `editSummaryFieldText` - editSummaryFieldText Default value is "Edit summary format..."
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getEditSummaryFieldText

          public java.lang.String getEditSummaryFieldText()

      Description copied from interface: `DataBoundComponent`
      Text for a menu item allowing users to edit the formatter for a field
      Specified by:
        `getEditSummaryFieldText` in interface `DataBoundComponent`
      Returns:
        String

    - #### setSavedSearchId

          public DetailViewer setSavedSearchId(java.lang.String savedSearchId)

      Description copied from interface: `DataBoundComponent`
      Optional identifier for saved searches that should be applied to this component.

      By default `SavedSearches` are associated with a component via its `local ID` and `DataSource ID`. This property allows developers to override this behavior and explicitly associate a component with a set of saved searches. This can provide a couple of benefits:
      Firstly this ensures that saved searches will be unambiguously associated with the particular component even if the page changes such that a stored minimal locator would no longer applied to the component, without requiring an explicit `Canvas.ID`.
      Secondly this allows the same set of saved searches to be applied to more than one component on a page. This may be valueable for cases where the same information from the same dataSource is presented to users in multiple places.

      Note: This is an advanced setting.

      Specified by:
        `setSavedSearchId` in interface `DataBoundComponent`
      Parameters:
        `savedSearchId` - New savedSearchId value. Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getSavedSearchId

          public java.lang.String getSavedSearchId()

      Description copied from interface: `DataBoundComponent`
      Optional identifier for saved searches that should be applied to this component.

      By default `SavedSearches` are associated with a component via its `local ID` and `DataSource ID`. This property allows developers to override this behavior and explicitly associate a component with a set of saved searches. This can provide a couple of benefits:
      Firstly this ensures that saved searches will be unambiguously associated with the particular component even if the page changes such that a stored minimal locator would no longer applied to the component, without requiring an explicit `Canvas.ID`.
      Secondly this allows the same set of saved searches to be applied to more than one component on a page. This may be valueable for cases where the same information from the same dataSource is presented to users in multiple places.

      Specified by:
        `getSavedSearchId` in interface `DataBoundComponent`
      Returns:
        Current savedSearchId value. Default value is null

    - #### setShowSavedSearchesByDS

          public DetailViewer setShowSavedSearchesByDS(boolean showSavedSearchesByDS)
                                                throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      Whether to associate saved searches by default with the current `DataSource` of a component when a `savedSearchId` is not provided. If this property is true, then when the DataSource is changed, existing saved searches will disappear and only be available if the DataSource is set back to its original value.

      If this property is false, saved searches will persist across DataSource changes so that searches that aren't applicable to the current DataSource might still be shown.

      Note: This is an advanced setting

      Specified by:
        `setShowSavedSearchesByDS` in interface `DataBoundComponent`
      Parameters:
        `showSavedSearchesByDS` - New showSavedSearchesByDS value. Default value is true
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getShowSavedSearchesByDS

          public boolean getShowSavedSearchesByDS()

      Description copied from interface: `DataBoundComponent`
      Whether to associate saved searches by default with the current `DataSource` of a component when a `savedSearchId` is not provided. If this property is true, then when the DataSource is changed, existing saved searches will disappear and only be available if the DataSource is set back to its original value.

      If this property is false, saved searches will persist across DataSource changes so that searches that aren't applicable to the current DataSource might still be shown.

      Specified by:
        `getShowSavedSearchesByDS` in interface `DataBoundComponent`
      Returns:
        Current showSavedSearchesByDS value. Default value is true

    - #### findAll

          public Record[] findAll(AdvancedCriteria adCriteria)

      Filters all objects according to the AdvancedCriteria passed
      Parameters:
        `adCriteria` - AdvancedCriteria to use to filter results
      Returns:
        all matching Objects or null if none found

    - #### find

          public Record find(AdvancedCriteria adCriteria)

      Filters all objects according to the AdvancedCriteria passed and returns the first matching object or null if not found
      Parameters:
        `adCriteria` - AdvancedCriteria to use to filter results
      Returns:
        first matching object or null if not found

    - #### findIndex

          public int findIndex(AdvancedCriteria adCriteria)

      Finds the index of the first Record that matches with the AdvacendCriteria passed.
      Parameters:
        `adCriteria` - AdvancedCriteria to use to filter results
      Returns:
        index of the first matching Record or -1 if not found

    - #### findNextIndex

          public int findNextIndex(int startIndex,
                                   AdvancedCriteria adCriteria,
                                   int endIndex)

      Like `RecordList.findIndex(java.util.Map)`, but considering the startIndex and endIndex parameters.
      Parameters:
        `startIndex` - first index to consider
        `adCriteria` - AdvancedCriteria to use to filter results
        `endIndex` - last index to consider
      Returns:
        index of the first matching Record or -1 if not found

    - #### findNextIndex

          public int findNextIndex(int startIndex,
                                   AdvancedCriteria adCriteria)

      Like `RecordList.findIndex(java.util.Map)`, but considering the startIndex parameter.
      Parameters:
        `startIndex` - first index to consider
        `adCriteria` - AdvancedCriteria to use to filter results
      Returns:
        index of the first matching Record or -1 if not found

    - #### selectRecord

          public void selectRecord(Record record)

      Description copied from interface: `DataBoundComponent`
      Select/deselect a `Record` passed in explicitly, or by index.
      Specified by:
        `selectRecord` in interface `DataBoundComponent`
      Parameters:
        `record` - record (or row number) to select

    - #### selectRecord

          public void selectRecord(int record)

      Description copied from interface: `DataBoundComponent`
      Select/deselect a `Record` passed in explicitly, or by index.
      Specified by:
        `selectRecord` in interface `DataBoundComponent`
      Parameters:
        `record` - record (or row number) to select

    - #### selectRecord

          public void selectRecord(int record,
                                   boolean newState)

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

    - #### selectRecord

          public void selectRecord(Record record,
                                   boolean newState)

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

    - #### selectRecords

          public void selectRecords(int[] records)

      Description copied from interface: `DataBoundComponent`
      Select/deselect a list of `Record`s passed in explicitly, or by index.
      Specified by:
        `selectRecords` in interface `DataBoundComponent`
      Parameters:
        `records` - records (or row numbers) to select

    - #### selectRecords

          public void selectRecords(int[] records,
                                    boolean newState)

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

    - #### selectRecords

          public void selectRecords(Record[] records)

      Description copied from interface: `DataBoundComponent`
      Select/deselect a list of `Record`s passed in explicitly, or by index.
      Specified by:
        `selectRecords` in interface `DataBoundComponent`
      Parameters:
        `records` - records (or row numbers) to select

    - #### selectRecords

          public void selectRecords(Record[] records,
                                    boolean newState)

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

    - #### deselectRecord

          public void deselectRecord(Record record)

      Description copied from interface: `DataBoundComponent`
      Deselect a `Record` passed in explicitly, or by index.

      Synonym for `selectRecord(record, false)`

      Specified by:
        `deselectRecord` in interface `DataBoundComponent`
      Parameters:
        `record` - record (or row number) to deselect

    - #### deselectRecord

          public void deselectRecord(int record)

      Description copied from interface: `DataBoundComponent`
      Deselect a `Record` passed in explicitly, or by index.

      Synonym for `selectRecord(record, false)`

      Specified by:
        `deselectRecord` in interface `DataBoundComponent`
      Parameters:
        `record` - record (or row number) to deselect

    - #### deselectRecords

          public void deselectRecords(int[] records)

      Description copied from interface: `DataBoundComponent`
      Deselect a list of `Record`s passed in explicitly, or by index.

      Synonym for `selectRecords(records, false)`

      Specified by:
        `deselectRecords` in interface `DataBoundComponent`
      Parameters:
        `records` - records (or row numbers) to deselect

    - #### deselectRecords

          public void deselectRecords(Record[] records)

      Description copied from interface: `DataBoundComponent`
      Deselect a list of `Record`s passed in explicitly, or by index.

      Synonym for `selectRecords(records, false)`

      Specified by:
        `deselectRecords` in interface `DataBoundComponent`
      Parameters:
        `records` - records (or row numbers) to deselect

    - #### selectAllRecords

          public void selectAllRecords()

      Description copied from interface: `DataBoundComponent`
      Select all records
      Specified by:
        `selectAllRecords` in interface `DataBoundComponent`

    - #### deselectAllRecords

          public void deselectAllRecords()

      Description copied from interface: `DataBoundComponent`
      Deselect all records
      Specified by:
        `deselectAllRecords` in interface `DataBoundComponent`

    - #### anySelected

          public java.lang.Boolean anySelected()

      Description copied from interface: `DataBoundComponent`
      Whether at least one item is selected
      Specified by:
        `anySelected` in interface `DataBoundComponent`
      Returns:
        true == at least one item is selected false == nothing at all is selected

    - #### enableHilite

          public void enableHilite(java.lang.String hiliteID)

      Description copied from interface: `DataBoundComponent`
      Enable / disable a `hilites`
      Specified by:
        `enableHilite` in interface `DataBoundComponent`
      Parameters:
        `hiliteID` - ID of hilite to enable

    - #### enableHilite

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

      Description copied from interface: `DataBoundComponent`
      Enable / disable a `hilites`
      Specified by:
        `enableHilite` in interface `DataBoundComponent`
      Parameters:
        `hiliteID` - ID of hilite to enable
        `enable` - new enabled state to apply - if null, defaults to true

    - #### disableHilite

          public void disableHilite(java.lang.String hiliteID)

      Description copied from interface: `DataBoundComponent`
      Disable a hilite
      Specified by:
        `disableHilite` in interface `DataBoundComponent`
      Parameters:
        `hiliteID` - ID of hilite to disable

    - #### enableHiliting

          public void enableHiliting()

      Description copied from interface: `DataBoundComponent`
      Enable all hilites.
      Specified by:
        `enableHiliting` in interface `DataBoundComponent`

    - #### enableHiliting

          public void enableHiliting(boolean enable)

      Description copied from interface: `DataBoundComponent`
      Enable all hilites.
      Specified by:
        `enableHiliting` in interface `DataBoundComponent`
      Parameters:
        `enable` - new enabled state to apply - if null, defaults to true

    - #### disableHiliting

          public void disableHiliting()

      Description copied from interface: `DataBoundComponent`
      Disable all hilites.
      Specified by:
        `disableHiliting` in interface `DataBoundComponent`

    - #### getDragData

          public Record[] getDragData()

      Description copied from interface: `DataBoundComponent`
      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()`.

      Specified by:
        `getDragData` in interface `DataBoundComponent`
      Returns:
        Array of `Record`s that are currently selected.

    - #### transferSelectedData

          public void transferSelectedData(DataBoundComponent source)

      Description copied from interface: `DataBoundComponent`
      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 `DataBoundComponent.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.

      Specified by:
        `transferSelectedData` in interface `DataBoundComponent`
      Parameters:
        `source` - source component from which the records will be tranferred

    - #### transferSelectedData

          public void transferSelectedData(DataBoundComponent source,
                                           int index)

      Description copied from interface: `DataBoundComponent`
      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 `DataBoundComponent.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.

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

    - #### getRecordIndex

          public int getRecordIndex(Record record)

      Description copied from interface: `DataBoundComponent`
      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

      Specified by:
        `getRecordIndex` in interface `DataBoundComponent`
      Parameters:
        `record` - the record whose index is to be retrieved
      Returns:
        indexindex of the record, or -1 if not found

    - #### getTitleFieldValue

          public java.lang.String getTitleFieldValue(Record record)

      Description copied from interface: `DataBoundComponent`
      Get the value of the titleField for the passed record

      Override in subclasses

      Specified by:
        `getTitleFieldValue` in interface `DataBoundComponent`
      Parameters:
        `record` - the record whose index is to be retrieved
      Returns:
        valuethe value of the titleField for the passed record

    - #### setTitleField

          public DetailViewer setTitleField(java.lang.String titleField)

      Description copied from interface: `DataBoundComponent`
      Sets the best field to use for a user-visible title for an individual record from this component.
      Specified by:
        `setTitleField` in interface `DataBoundComponent`
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getTitleField

          public java.lang.String getTitleField()

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `getTitleField` in interface `DataBoundComponent`
      Returns:
        fieldName the title field for this component.

    - #### getDataSource

          public DataSource getDataSource()

      Description copied from interface: `DataBoundComponent`
      The DataSource that this component should bind to for default fields and for performing `DataSource requests`.
      Specified by:
        `getDataSource` in interface `DataBoundComponent`
      Returns:
        DataSource

    - #### setAutoFetchData

          public DetailViewer setAutoFetchData(java.lang.Boolean autoFetchData)
                                        throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      If true, when this component is first drawn, automatically call `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()` depending on `DataBoundComponent.getAutoFetchAsFilter()` . Criteria for this fetch may be picked up from `initialCriteria` and textMatchStyle may be specified via `DataBoundComponent.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.

      Specified by:
        `setAutoFetchData` in interface `DataBoundComponent`
      Parameters:
        `autoFetchData` - autoFetchData
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException`

    - #### getAutoFetchData

          public java.lang.Boolean getAutoFetchData()

      Description copied from interface: `DataBoundComponent`
      If true, when this component is first drawn, automatically call `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()` depending on `DataBoundComponent.getAutoFetchAsFilter()` . Criteria for this fetch may be picked up from `initialCriteria` and textMatchStyle may be specified via `DataBoundComponent.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.

      Specified by:
        `getAutoFetchData` in interface `DataBoundComponent`
      Returns:
        autoFetchData autoFetchData

    - #### setAutoFetchTextMatchStyle

          public DetailViewer setAutoFetchTextMatchStyle(TextMatchStyle autoFetchTextMatchStyle)
                                                  throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `DataBoundComponent.fetchData()` call.
      Specified by:
        `setAutoFetchTextMatchStyle` in interface `DataBoundComponent`
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException`

    - #### getAutoFetchTextMatchStyle

          public TextMatchStyle getAutoFetchTextMatchStyle()

      Description copied from interface: `DataBoundComponent`
      If `autoFetchData` is `true`, this attribute allows the developer to specify a textMatchStyle for the initial `DataBoundComponent.fetchData()` call.
      Specified by:
        `getAutoFetchTextMatchStyle` in interface `DataBoundComponent`
      Returns:
        autoFetchTextMatchStyle autoFetchTextMatchStyle

    - #### setAutoFetchAsFilter

          public DetailViewer setAutoFetchAsFilter(java.lang.Boolean autoFetchAsFilter)
                                            throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      If `DataBoundComponent.setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()`
      Specified by:
        `setAutoFetchAsFilter` in interface `DataBoundComponent`
      Parameters:
        `autoFetchAsFilter` - autoFetchAsFilter
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException`

    - #### getAutoFetchAsFilter

          public java.lang.Boolean getAutoFetchAsFilter()

      Description copied from interface: `DataBoundComponent`
      If `DataBoundComponent.setAutoFetchData(Boolean)` is true, this attribute determines whether the initial fetch operation should be performed via `DataBoundComponent.fetchData()` or `DataBoundComponent.filterData()`
      Specified by:
        `getAutoFetchAsFilter` in interface `DataBoundComponent`
      Returns:
        auto fetch as filter

    - #### setInitialCriteria

          public DetailViewer setInitialCriteria(Criteria initialCriteria)
                                          throws java.lang.IllegalStateException

      Description copied from interface: `DataBoundComponent`
      Criteria to use when `DataBoundComponent.setAutoFetchData(Boolean)` is used.
      Specified by:
        `setInitialCriteria` in interface `DataBoundComponent`
      Parameters:
        `initialCriteria` - the initial criteria
      Returns:
        `DataBoundComponent` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the component has been created

    - #### getInitialCriteria

          public Criteria getInitialCriteria()

      Description copied from interface: `DataBoundComponent`
      Criteria to use when `DataBoundComponent.setAutoFetchData(Boolean)` is used.
      Specified by:
        `getInitialCriteria` in interface `DataBoundComponent`
      Returns:
        the criteria

    - #### setImplicitCriteria

          public DetailViewer setImplicitCriteria(Criteria implicitCriteria)

      Description copied from interface: `DataBoundComponent`
      Criteria that are never shown to or edited by the user and are cumulative with any criteria provided via `DataBoundComponent.initialCriteria`, `DataBoundComponent.setCriteria()` etc.
      Specified by:
        `setImplicitCriteria` in interface `DataBoundComponent`
      Parameters:
        `implicitCriteria` - New implicitCriteria value. Default value is null
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### setImplicitCriteria

          public java.lang.Boolean setImplicitCriteria(Criteria implicitCriteria,
                                                       DSCallback callback)

    - #### setImplicitCriteria

          public java.lang.Boolean setImplicitCriteria(Criteria criteria,
                                                       DSCallback callback,
                                                       java.lang.Boolean initialFetch)

    - #### getImplicitCriteria

          public Criteria getImplicitCriteria()

      Description copied from interface: `DataBoundComponent`
      Criteria that are never shown to or edited by the user and are cumulative with any criteria provided via `DataBoundComponent.initialCriteria`, `DataBoundComponent.setCriteria()` etc.
      Specified by:
        `getImplicitCriteria` in interface `DataBoundComponent`
      Returns:
        Current implicitCriteria value. Default value is null

    - #### fetchData

          public void fetchData()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `fetchData` in interface `DataBoundComponent`

    - #### fetchData

          public void fetchData(Criteria criteria)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `fetchData` in interface `DataBoundComponent`
      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

          public void fetchData(Criteria criteria,
                                DSCallback callback)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `fetchData` in interface `DataBoundComponent`
      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

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

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `fetchData` in interface `DataBoundComponent`
      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

          public void filterData()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `filterData` in interface `DataBoundComponent`

    - #### filterData

          public void filterData(Criteria criteria)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `filterData` in interface `DataBoundComponent`
      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

          public void filterData(Criteria criteria,
                                 DSCallback callback)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `filterData` in interface `DataBoundComponent`
      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 `DataBoundComponent.fetchData()` for details

    - #### filterData

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

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `filterData` in interface `DataBoundComponent`
      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 `DataBoundComponent.fetchData()` for details
        `requestProperties` - for databound components only - optional additional properties to set on the DSRequest that will be issued

    - #### invalidateCache

          public void invalidateCache()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `invalidateCache` in interface `DataBoundComponent`
      See Also:
        `ListGrid.refreshData()`, `DataBoundComponentMethods overview and related methods`

    - #### getResultSet

          public ResultSet getResultSet()

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `getResultSet` in interface `DataBoundComponent`
      Returns:
        ResultSet, or null if the underlying data is not a ResultSet
      See Also:
        `DataBoundComponent.fetchData()`

    - #### getRecordList

          public RecordList getRecordList()

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `getRecordList` in interface `DataBoundComponent`
      Returns:
        the RecordList

    - #### getDataAsJSList

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

      Specified by:
        `getDataAsJSList` in interface `DataBoundComponent`

    - #### exportData

          public void exportData()

      Description copied from interface: `DataBoundComponent`
      See `DataBoundComponent.exportData(com.smartgwt.client.data.DSRequest,com.smartgwt.client.rpc.RPCCallback)`
      Specified by:
        `exportData` in interface `DataBoundComponent`

    - #### exportData

          public void exportData(DSRequest requestProperties)

      Description copied from interface: `DataBoundComponent`
      See `DataBoundComponent.exportData(com.smartgwt.client.data.DSRequest,com.smartgwt.client.rpc.RPCCallback)`
      Specified by:
        `exportData` in interface `DataBoundComponent`

    - #### exportData

          public void exportData(DSRequest requestProperties,
                                 RPCCallback callback)

      Description copied from interface: `DataBoundComponent`
      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`.

      Specified by:
        `exportData` in interface `DataBoundComponent`
      Parameters:
        `requestProperties` - additional properties to set on DSRequest that will be issued
        `callback` - Optional callback. Note that this parameter only applies if you specify `exportToClient`: false in the request properties, because file downloads don't provide ordinary framework callbacks
      See Also:
        `DataBoundComponentMethods overview and related methods`

    - #### addFetchDataHandler

          public com.google.gwt.event.shared.HandlerRegistration addFetchDataHandler(FetchDataHandler handler)

      Add a fetchData handler.

      Notification function fired on fetchData() or filterData()

      Specified by:
        `addFetchDataHandler` in interface `HasFetchDataHandlers`
      Parameters:
        `handler` - the filterData handler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDropCompleteHandler

          public com.google.gwt.event.shared.HandlerRegistration addDropCompleteHandler(DropCompleteHandler handler)

      Add a `com.smartgwt.client.widgets.DropCompleteHandler`. See that class's documentation for a definition of "drop complete", and how it differs from "drag complete" (`com.smartgwt.client.widgets.DragCompleteHandler`).
      Specified by:
        `addDropCompleteHandler` in interface `HasDropCompleteHandlers`
      Parameters:
        `handler` - the DropCompleteHandler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### addDragCompleteHandler

          public com.google.gwt.event.shared.HandlerRegistration addDragCompleteHandler(DragCompleteHandler handler)

      Add a `com.smartgwt.client.widgets.DragCompleteHandler`. See that class's documentation for a definition of "drag complete", and how it differs from "drop complete" (`com.smartgwt.client.widgets.DropCompleteHandler`).
      Specified by:
        `addDragCompleteHandler` in interface `HasDragCompleteHandlers`
      Parameters:
        `handler` - the DropCompleteHandler
      Returns:
        `HandlerRegistration` used to remove this handler

    - #### getFieldAlignments

          public Alignment[] getFieldAlignments()

      Description copied from interface: `DataBoundComponent`
      Returna an array of field alignments for this grid
      Specified by:
        `getFieldAlignments` in interface `DataBoundComponent`
      Returns:
        array of Alignments

    - #### getDeepCloneOnEdit

          public java.lang.Boolean getDeepCloneOnEdit()

      Description copied from interface: `DataBoundComponent`
      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)`

      Specified by:
        `getDeepCloneOnEdit` in interface `DataBoundComponent`

    - #### setDeepCloneOnEdit

          public DetailViewer setDeepCloneOnEdit(java.lang.Boolean deepCloneOnEdit)

      Description copied from interface: `DataBoundComponent`
      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)`

      Specified by:
        `setDeepCloneOnEdit` in interface `DataBoundComponent`
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### setFields

          public DetailViewer setFields(com.google.gwt.core.client.JavaScriptObject... fields)

      Description copied from interface: `DataBoundComponent`
      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.

      Specified by:
        `setFields` in interface `DataBoundComponent`
      Parameters:
        `fields` - the component fields
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getFieldsAsJavaScriptObjects

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

      Description copied from interface: `DataBoundComponent`
      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.
      Specified by:
        `getFieldsAsJavaScriptObjects` in interface `DataBoundComponent`
      Returns:
        the component fields

    - #### getFieldCount

          public int getFieldCount()

      Description copied from interface: `DataBoundComponent`
      Return the number of fields.
      Specified by:
        `getFieldCount` in interface `DataBoundComponent`
      Returns:
        the number of fields

    - #### transferRecords

          public void transferRecords(Record[] records,
                                      Record targetRecord,
                                      java.lang.Integer index,
                                      Canvas sourceWidget,
                                      TransferRecordsCallback callback)

      Description copied from interface: `DataBoundComponent`
      Transfer a list of `Record`s from another component (does not have to be a databound component) into this component. This method is only applicable to list-type components, such as `ListGrid` or `com.smartgwt.client.widgets.tile.TileGridTileGrid`. Notably, it does not apply to `TreeGrid`; the equivalent for treeGrids is `transferNodes`.

      This method implements the automatic drag-copy and drag-move behaviors of components like `ListGrid`, and calling it is equivalent to completing a drag and drop of the `dropRecords` (the default record drop behavior is simply to call `transferRecords()`, passing in the dropped nodes)

      Note that this method is asynchronous - it may need to perform server turnarounds to prevent duplicates in the target component's data. If you wish to be notified when the transfer process has completed, you can either pass a non-null callback to this method or add a `DropCompleteHandler` to this component.

      See also `transferSelectedData()`

      Specified by:
        `transferRecords` in interface `DataBoundComponent`
      Parameters:
        `records` - Recordss to transfer to this component
        `targetRecord` - The target record (eg, of a drop interaction), for context
        `index` - Insert point relative to the target record for the transferred records
        `sourceWidget` - The databound or non-databound component from which the records are to be transferred.
        `callback` - optional TransferRecordsCallback to be fired when the transfer process has completed (pass null if your code does not need to be called back). The callback will be passed the list of records actually transferred to this component

    - #### setDragDataCustomizer

          public DetailViewer setDragDataCustomizer(DragDataCustomizer customizer)

      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 `willAcceptDrop()`.

      Parameters:
        `DragDataCustomizer` - customizer
      Returns:
        `DataBoundComponent` instance, for chaining setter calls

    - #### getSort

          public SortSpecifier[] getSort()

      Description copied from interface: `DataBoundComponent`
      Returns the current `SortSpecifiers` for this component. Will return null if this component has never been sorted, or the underlying SmartClient widget does not exist.
      Specified by:
        `getSort` in interface `DataBoundComponent`
      Returns:
        current sort specifiers for this component (null if unsorted or no SC widget)

    - #### setSort

          public DetailViewer setSort(SortSpecifier... sortSpecifiers)

      Description copied from interface: `DataBoundComponent`
      Sort the component on one or more fields.

      Pass in an array of `SortSpecifier`s to have the component's data sorted by the fields in each `specifier.property` and in the directions specified. The component can be sorted by any combination of fields, including fields specified in the fields array and `unused fields from the underlying dataSource`, if there is one.

      If setSort() is called on a component which doesn't yet have a SmartClient widget, the widget will be created. If `autoFetchData` is set and a `DataSource` has been set, this will result in data being fetched.

      Specified by:
        `setSort` in interface `DataBoundComponent`
      Parameters:
        `sortSpecifiers` - Array of `SortSpecifier` objects

    - #### setLogicalStructure

          public com.smartgwt.logicalstructure.core.LogicalStructureObject setLogicalStructure(com.smartgwt.logicalstructure.widgets.viewer.DetailViewerLogicalStructure s)

      Setter implementing the `LogicalStructure` interface, which supports Eclipse's logical structure debugging facility.

    - #### getLogicalStructure

          public com.smartgwt.logicalstructure.core.LogicalStructureObject getLogicalStructure()

      Getter implementing the `LogicalStructure` interface, which supports Eclipse's logical structure debugging facility.
      Specified by:
        `getLogicalStructure` in interface `LogicalStructure`
      Overrides:
        `getLogicalStructure` in class `Canvas`