Class: Grid

@nginstack/web-framework/lib/grid/Grid~ Grid


new Grid(parent, name)

Classe que permite a construção e manipulação de uma grade.
Atenção: este construtor é de uso interno do WebFramework. Uma grade deve ser construída através dos métodos Process.grid() ou definindo um campo de grade do tipo "grid".

Parameters:
Name Type Description
parent Object

Objeto que irá conter a grade criada. Atualmente, somente são suportados objetos das classes Process ou Field.

name string

Nome único dentro de um processo que irá identificar a grade.

See:
  • Process#grid
  • Grid#field

Extends

  • Emitter

Members


<static, constant> MAX_VISIBLE_RECORD_COUNT :number

Quantidade máxima de registros visíveis em uma grade no modo tabela.

Type:
  • number

<static, constant> MDA_DELETE :MasterDeleteAction

Indica que os registros detalhes devem ser excluídos.

Type:
  • MasterDeleteAction
Deprecated:
  • Utilize MasterDeleteAction.DELETE.

<static, constant> MDA_ERROR :MasterDeleteAction

Indica que deve ser gerado um erro caso haja registros detalhes no momento da exclusão do registro mestre.

Type:
  • MasterDeleteAction
Deprecated:
  • Utilize MasterDeleteAction.ERROR.

Indica que os campos que vinculam os registros detalhes, module:@nginstack/web-framework/lib/grid/GridField~GridField#detailFieldNames, devem ser preenchidos com null.

Type:
  • MasterDeleteAction
Deprecated:
  • Utilize MasterDeleteAction.UNLINK.

automaticClearSelectedRecords :Boolean

Indica se toda vez que for dado um write() na grade, ou seja, caso a grade seja re-escrita, o array da propriedade selectedRecords é limpo, ou seja se deverão ser deletados os bookmarks (marcadores) dos registros que estão selecionados na grade.
O valor padrão é: false.

Type:
  • Boolean

automaticClearUnselectableRecords :Boolean

Indica se toda vez que for dado um write() na grade, ou seja, caso a grade seja re-escrita, o array da propriedade unselectableRecords é limpo, ou seja se deverão ser deletados os bookmarks (marcadores) dos registros que não podem ser selecionados pelo usuário na grade.
O valor padrão é: false.

Type:
  • Boolean

autoPersist :boolean

Determina se a persistência dos dados ocorrerá automaticamente quando os métodos #del e #post forem chamados.

Type:
  • boolean

breakLine :Boolean

Indica se o próximo objeto a ser escrito depois da grade deverá ir para a linha seguinte do gerenciador de layout.

Type:
  • Boolean

canDelete :number

Indica se é permitida a exclusão dos registros. Os possíveis valores são:

  • Grid.USER_PERMISSION - As permissões do usuário serão verificadas para decidir se ele pode ou não excluir.
  • Grid.NEVER - A operação nunca é permitida.
  • Grid.ALWAYS - A operação sempre é permitida.
    O valor padrão é Grid.USER_PERMISSION.
Type:
  • number

canDuplicate :boolean

Indica se um registro da grade pode ser duplicado.

Type:
  • boolean
Default Value:
  • true

canEdit :number

Indica se é permitida a edição dos registros. Os possíveis valores são:

  • Grid.USER_PERMISSION - As permissões do usuário serão verificadas para decidir se ele pode ou não editar.
  • Grid.NEVER - A operação nunca é permitida.
  • Grid.ALWAYS - A operação sempre é permitida.
    O valor padrão é Grid.USER_PERMISSION.
Type:
  • number

canExport :number

Indica se é permitida a exportação dos dados da grid. Os possíveis valores são:

  • Grid.USER_PERMISSION - As permissões do usuário serão verificadas para decidir se ele pode ou não exportar os dados.
  • Grid.NEVER - A operação nunca é permitida.
  • Grid.ALWAYS - A operação sempre é permitida.
    O valor padrão é Grid.USER_PERMISSION.
Type:
  • number

canInsert :number

Indica se é permitida a inserção de novos registros. Os possíveis valores são:

  • Grid.USER_PERMISSION - As permissões do usuário serão verificadas para decidir se ele pode ou não inserir.
  • Grid.NEVER - A operação nunca é permitida.
  • Grid.ALWAYS - A operação sempre é permitida.
    O valor padrão é Grid.USER_PERMISSION.
Type:
  • number

canInvertSelection :Boolean

Indica se é permitida a inversão da seleção dos registros.
Atenção: Não é possível fazer a inversão da seleção dos registros caso a grade esteja em edição.
O valor padrão é: true.

Type:
  • Boolean

canModify :Boolean

Propriedade de somente leitura. Seu valor não pode ser alterado.
Indica se a grade pode ser modificada, levando em conta as seguintes considerações:

  • ela é uma grade filha e a grade mãe é somente leitura;
  • ela é uma grade filha e o campo que a define é somente leitura;
  • usuário não tem permissão de alteração.
    Caso seja constatado um dos casos anteriores então a grade não poderá ser modificada.
Type:
  • Boolean

canPostDataSetOnEvents :boolean

Determina se o dataSet da grade pode sofrer modificações que efetivem a edição ou inserção do registro durante os eventos da grade. Por padrão, esse tipo de ação não será permitido, pois normalmente é um erro de desenvolvimento. Por uma questão de compatibilidade com o comportamento da grade de permitir esse tipo gravação antecipada, apenas os listeners registrados por meio do método #on serão afetados por essa configuração.

Type:
  • boolean

canShowLog :Boolean

Indica se a grade deve permitir visualização dos logs de alteração.
Se true, então a visualização dos logs será permitida de acordo com as permissões do usuário. Se false, então a visualização dos logs será desabilitada independentemente das permissões do usuário. O valor padrão é: true.

Type:
  • Boolean

classDefinition :Object

Instância do x-class da classe informada na propriedade classKey.

Type:
  • Object

classDefManager :ClassDefManager

Instância de classDefManager utilizada para construir os x-class utilizados pela grade e pelos campos lookup. Por padrão é utilizada a instância global retornada pelo método ClassDefManager.getInstance();

Type:
  • ClassDefManager

classKey :number

Classe do sistema que define o modelo de dados do DataSet controlado pela grade. As definições dos campos e eventos existentes no x-class da classe informada serão copiados para esta grade.
Também serão executados os defineGrid associados ao nome desta grade.
Estas definições com base no x-class serão executadas antes do evento onDefineGrid(), portanto, caso sejam realizadas outras definições neste evento, estas sobrescreverão as definidas no x-class.

Type:
  • number

classKeyToValidatePermission :number|DBKey

Classe alternativa para validar as permissões do usuário. Caso não seja informada, será utilizada a #classKey.

Type:
  • number | DBKey

collapsed :boolean

Determina se a grade será exibida em modo colapse (apenas a barra de título).

Type:
  • boolean

column :number

Permite dispor grades em colunas ao invés da disposição padrão de registros, ou seja, as grades serão exibidas lado-a-lado ao invés de uma abaixo da outra. Pode-se também definir em que ordem elas irão aparecer ao setar o valor da propriedade.

Type:
  • number
Example
this.grid1.column = 0
   this.grid2.column = 1

   this.grid1.write()
   this.grid2.write()

   // As grades acima serão exibidas lado-a-lado
   // ----------   ----------
   // |  grid1 |   |  grid2 |
   // ----------   ----------

confirmCancel :Boolean

Indica se a grade deve pedir confirmação para proceder com o cancelamento das alterações feitas.
Se true, então será exibida uma caixa de diálogo ao usuário para que ele confirme o cancelamento.
O valor padrão é: true.

Type:
  • Boolean

confirmChange :Boolean

Indica se a grade deve pedir confirmação para postar alterações.
Se true, então será exibida uma caixa de diálogo ao usuário para que ele confirme a alteração.
O valor padrão é: false.

Type:
  • Boolean

confirmDelete :Boolean

Indica se a grade deve pedir confirmação para proceder com a deleção solicitada.
Se true, então será exibida uma caixa de diálogo ao usuário para que ele confirme a deleção.
O valor padrão é: true.

Type:
  • Boolean

dataExporter :Object

Objeto DataExportGrid que é usado para exportação de dados da grade.

Type:
  • Object

<nullable> definitionClass :number

Indica a classe a ser utilizada na carga da configuração desta grade na definição de visão. A definição de grade deve ser declarada por meio do método uwi.classdef.ViewDef#defineGrid. Caso não seja informado, será utilizado #classKey.

Importante: ao informar esta propriedade a grade poderá requerer uma recarga das suas configurações. Para que não haja perda de configurações, as definições de campos necessariamente devem ser realizadas dentro do evento defineFields e as definições das grades detalhes no evento defineGrid.

Type:
  • number
See:

<nullable> definitionName :number

Indica o nome a ser utilizado na carga da configuração desta grade na definição de visão. A definição de grade deve ser declarada por meio do método uwi.classdef.ViewDef#defineGrid. Caso não seja informado, será utilizado #name.

Importante: ao informar esta propriedade a grade poderá requerer uma recarga das suas configurações. Para que não haja perda de configurações, as definições de campos necessariamente devem ser realizadas dentro do evento defineFields e as definições das grades detalhes no evento defineGrid.

Type:
  • number
See:

delayedOnAfterScrollEventCall_ :boolean

Indica se a chamada do onAfterScroll será realizada após a sincronia da grade, devido à troca de página.

Type:
  • boolean

ds :DataSet

DataSet ao qual a grade está associada.

Type:

enabledActions :Array.<(Button|string)>

Type:
Deprecated:
  • Utilize a propriedade enabledButtons.
See:
  • Grid#enabledButtons

enabledButtons :Array.<(Button|string)>

Array com os nomes ou as instâncias dos botões que devem estar habilitados na grade.

Type:
See:
  • Grid#visibleButtons

fields :FieldList

Lista que contém as definições dos campos da grade.
Deverá haver uma instância da classe Field para cada campo.

Type:
  • FieldList

formViewFieldNames :string

Contém os nomes dos campos que deverão compor o modo formView (modo formulário).
Os nomes devem estar separados por ponto-e-vírgula (";"). Caso esta propriedade não seja definida então todos os campos serão exibidos de acordo com as respectivas propriedades de visão.

Type:
  • string
Example
grid.formViewFieldNames = "nome;endereço;idade"

groups :FieldGroups

Coleção de agrupamentos da grade.

Type:
  • FieldGroups

hasFormView :boolean

Determina se a grade poderá ser vista no modo formulário.
Se o valor for setado para falso, a propriedade viewMode da grade será setada para Grid.TABLEVIEW.

Type:
  • boolean

hasTableView :boolean

Determina se a grade poderá ser vista no modo tabela.
Se o valor for setado para falso, a propriedade viewMode da grade será setada para Grid.FORMVIEW. Independente do valor informado, grades de variáveis nunca tem modelo tabela e sempre retornam false.

Type:
  • boolean

help :Object|string

Utilizada para especificar a ajuda da grade.

Type:
  • Object | string

hintFieldNames :string

Lista que contém os nomes dos campos da grade que devem ter o conteúdo exibido através de um hint para toda célula da grade.
O hint é uma janela de ajuda exibida quando o mouse permanece um tempo parado sobre uma célula.

Type:
  • string

maxRecordCount :number

Número de registros que serão exibidos no modo tabela. No mínimo poderá ser informado o valor 1 e no máximo o valor Grid.MAX_VISIBLE_RECORD_COUNT.

Type:
  • number

maxSelectedRecords :number

Indica a quantidade máxima de registros que podem ser selecionados na grade.
Por padrão não há limite para os registros que podem ser selecionados.

Type:
  • number

name :string

Nome da grade.

O nome da grade é definido na construção do componente e não pode ser modificado após a construção da grade.

Type:
  • string

onAfterCancel :Event

Evento que será executado após cancelar a inserção ou edição de um registro, fazendo com que qualquer alteração realizada até o momento no registro seja desfeita e com que a grade retorne ao estado de navegação.
No exemplo abaixo modifica-se o modo de visão da grade para o modo tabela, caso a grade não esteja neste modo, e também é exibido um alerta de que a edição/inserção do registro foi cancelada.
O evento recebe os seguintes parâmetros:

  • grid: grade a qual pertence o registro cuja edição/inserção foi cancelada;
Type:
  • Event
Deprecated:
  • Utilize on('afterCancel', listener).
Example
grid.onAfterCancel.set( function ( grid ){
   if (grid.viewMode == Grid.FORMVIEW ){
    grid.viewMode = Grid.TABLEVIEW
   }
   grid.process.alert( "Edição/Inserção cancelada!" )
})

onAfterDelete :Event

Evento que será executado após um registro ser excluído da grade, ou seja após ser excluído do dataSet da grade.
No exemplo abaixo após o registro ser excluído é informada uma mensagem confirmando a exclusão e é realizado um refresh na estrutura da grade. O evento recebe os seguintes parâmetros:

  • grid: grade em que o registro foi excluído;
Type:
  • Event
Deprecated:
  • Utilize on('afterDelete', listener).
Example
onAfterDelete.set( function ( grid ) {
   grid.process.alert( 'Exclusões Efetuadas com Sucesso!' )
})

onAfterDuplicate :Event

Evento que será executado após um registro ser duplicado. O evento recebe os seguintes parâmetros:

  • grid: grade que possui o registro que foi duplicado;
Type:
  • Event
Deprecated:
  • Utilize on('afterDuplicate', listener).
Example
grid.onAfterDuplicate.set( function (grid) {
   this.alert('Registro duplicado.');
})

onAfterEdit :Event

Evento que será executado após um registro entrar em edição. O registro entra em edição ao ser chamado o método grid.edit, que pode ser chamado diretamente pelo programador ou automaticamente quando se altera o valor de um campo;
O exemplo abaixo pega o último horário em que o registro entrou em edição e salva este valor em um campo somente leitura da grade, ficando assim registrado o horário da última edição no registro.
O evento recebe os seguintes parâmetros:

  • grid: grade que entrou em edição;
Type:
  • Event
Deprecated:
  • Utilize on('afterEdit', listener).
Example
grid.onAfterEdit.set( function ( grid ){
   var hoje = new Date
   grid.field('data').setValueOnly(ngin.text.toFormattedString(hoje, "DD/MM/YYYY" ) + " "
   + hoje.getHours() + ":" + hoje.getMinutes() + ":" + hoje.getSeconds() )
})

onAfterExpand :Event

Evento que será executado após um registro ser expandido pelo usuário.
Utilizado apenas pela TreeGrid.
O evento receberá os seguintes parâmetros:

  • grid: grade que possui o registro que foi expandido;
  • childValue: valor do campo, exibido na árvore, que foi expandido;
  • tree: instância da classe Tree que contém a estrutura de nós da árvore de navegação.
Type:
  • Event
Deprecated:
  • Utilize on('afterExpand', listener).

onAfterInsert :Event

Evento que será executado após ser inserido um novo registro na grade, ou seja, após o registro ser incluso no dataSet da grade e antes que ele entre em edição.
O exemplo abaixo modifica o modo de visão da grade para o modo de formulário caso a grade não esteja neste modo e exibe uma mensagem alertando que o registro foi incluído no dataSet.
O evento recebe os seguintes parâmetros:

  • grid: grade em que o registro foi inserido;
Type:
  • Event
Deprecated:
  • Utilize on('afterInsert', listener).
Example
grid.onAfterInsert.set( function ( grid ){
   if (grid.viewMode == Grid.TABLEVIEW ){
    grid.viewMode = Grid.FORMVIEW
   }
   grid.parent.alert("Registro inserido com sucesso!")
})

onAfterPost :Event

Evento que será executado após ser realizada a inserção ou edição um registro. Pode-se definir através deste método uma função a ser executada após o registro ser incluído ou atualizado no dataSet da grade. Pode-se utilizar este evento para criar um log do horário que o registro foi criado ou modificado, ou ainda notificar ao usuário a quantidade de registros que ainda podem ser inseridos no dataSet da grade, como demonstrado no exemplo a seguir.
O evento recebe os seguintes parâmetros:

  • grid: grade em que foi inserir o registro;
Type:
  • Event
Deprecated:
  • Utilize on('afterPost', listener).
Example
grid.onAfterPost.set( function ( grid ){
   if (grid.ds.recordCount < 5 ){
    grid.parent.alert( "Atenção: Ainda poderão ser adicionados " +
             ( maxRecordNumber - grid.ds.recordCount ) +
              " registros" )
   } else {
    grid.parent.alert( "Atenção! Não poderão mais adicionar registros:
             Número máximo de registros atingido!" )
   }
})

onAfterPrepare :Event

Evento executado pós a preparação da grade O evento recebe os seguintes parâmetros:

  • grid: grade que está sendo preparada.
Type:
  • Event
Example
grid.onAfterPrepare.set(function (grid) {
})

onAfterScroll :Event

Evento que será disparado após a navegação de um registro para um outro em uma grade associada a um DataSet. Também será disparado logo após a grade ser escrita quando se posicionar no primeiro registro da grade.
O evento recebe os seguintes parâmetros:

  • grid: grade em que se deve aplicar o evento.
Type:
  • Event
Deprecated:
  • Utilize on('afterScroll', listener).
Example
grid.onAfterScroll.set( function ( grid ){
 })

onAfterSelectRecord :Event

Evento que será disparado após um ou mais registros serem selecionados.
Neste evento, é possível manipular a seleção retornando um bookmark ou array de bookmarks. O evento deverá retornar ou um bookmark ou um array de bookmarks que representarão os registros selecionados.

Type:
  • Event

onBeforeCancel :Event

Evento que será executado antes de cancelar a inserção ou edição de um registro, fazendo com que qualquer alteração realizada até o momento no registro seja desfeita e com que a grade retorne ao estado de navegação.

No exemplo abaixo é exibido um alerta de que a inserção/edição do registro está sendo cancelada e que a grade irá retornar para o modo de tabela.

O evento recebe os seguintes parâmetros:

  • grid: grade em que foi cancelada a inserção/edição do registro.
Type:
  • Event
Deprecated:
  • Utilize on('beforeCancel', listener).
Example
grid.onBeforeCancel.set( function ( grid ){
   grid.process.alert( "Atenção! Cancelando a edição,
             todas as informações serão perdidas!" )
   grid.process.alert( "Grade retornando para o modo
             de visão em tabela..." )
   if (grid.viewMode == Grid.FORMVIEW ){
    grid.viewMode = Grid.TABLEVIEW
   }
})

onBeforeDelete :Event

Evento que será executado antes que um registro seja excluído da grade, ou seja antes que seja excluído do dataSet da grade.
A grade possui o método Grid.canDelete que determina se é possível ou não deletar registros na grade ou se será de acordo com as permissões do usuário logado.
Podemos utilizar o evento onBeforeDelete para solicitar um login e senha de algum usuário cadastrado no sistema para que possa ser validada a deleção do registro, conforme exemplo abaixo, que além de fazer a verificação, bloqueia a grid para deleção de registros caso esta verificação falhe.
O evento recebe os seguintes parâmetros:

  • grid: grade em que está o registro a ser excluído;
Type:
  • Event
Deprecated:
  • Utilize on('beforeDelete', listener).
Example
grid.onBeforeDelete.set( function ( grid ){
   if (grid.parent.authenticateUser( "Insira as informações de login" ) == -1 ){
    grid.canDelete = Grid.NEVER
    throw new Error( "Nome de Usuário ou senha incorretos!
             Não pode deletar! Registro bloqueado para deleção!" )
   }
})

onBeforeDuplicate :Event

Evento que será executado antes que um registro seja duplicado. O evento recebe os seguintes parâmetros:

  • grid: grade que possui o registro que será duplicado;
Type:
  • Event
Deprecated:
  • Utilize on('beforeDuplicate', listener).
Example
grid.onBeforeDuplicate.set( function (grid) {
   this.alert('Duplicando registro em ' + grid.name + '.');
})

onBeforeEdit :Event

Evento que será executado antes que um registro entre em edição. O registro entra em edição ao ser chamado o método grid.edit, que pode ser chamado diretamente pelo programador ou automaticamente quando é alterado o valor de um campo;
O exemplo abaixo solicita as informações de login (nome de usuário e senha) para validar se o registro pode ou não ser alterado. Caso não possa validar será exibida uma mensagem de erro e a grade não entra em edição.
O evento recebe os seguintes parâmetros:

  • grid: grade que irá entrar em edição;
Type:
  • Event
Deprecated:
  • Utilize on('beforeEdit', listener).
Example
grid.onBeforeEdit.set( function ( grid ){
   var result = grid.parent.authenticateUser( "Insira as informações de login" )
   if (result == -1 || result == null){
    throw new Error( "Nome de Usuário ou senha incorretos! Não pode editar!" )
   }
})

onBeforeExpand :Event

Evento executado antes de um registro ser expandido pelo usuário.
Utilizado apenas pela TreeGrid.
O evento receberá os seguintes parâmetros:

  • grid: grade que possui o registro que foi expandido;
  • childValue: valor do campo, exibido na árvore, que foi expandido;
  • tree: instância da classe Tree que contém a estrutura de nós da árvore de navegação.
Type:
  • Event
Deprecated:
  • Utilize on('beforeExpand', listener).

onBeforeInsert :Event

Evento que será executado antes que um novo registro seja inserido na grade, ou seja, antes que o registro seja incluído no dataSet da grade.
Pode ser usado para controlar a quantidade de registros que serão inseridos no dataSet da grade conforme o exemplo abaixo que limita a quantidade de registros inseridos no dataSet à 5 e exibe um erro caso se tente inserir mais que a quantidade máxima de registros permitida.
O evento recebe os seguintes parâmetros:

  • grid: grade em que irá inserir o registro;
Type:
  • Event
Deprecated:
  • Utilize on('beforeInsert', listener).
Example
grid.onBeforeInsert.set( function ( grid ){
   if (grid.ds.recordCount >= 5 ){
    throw new Error ( "Número máximo de registros atingido!" )
   }
})

onBeforePost :Event

Evento que será executado antes de realizar a inserção ou edição um registro, permitindo por exemplo que os novos dados no registro possam ser avaliados antes de serem atualizados ou incluídos.
O exemplo abaixo verifica se os valores nos campos "password" e "confirmPassword" são iguais, ou seja, se o usuário digitou uma senha e a confirmou corretamente, em caso negativo exibe um erro, impedindo que o registro seja inserido.
O evento recebe os seguintes parâmetros:

  • grid: grade em que irá inserir o registro;
Type:
  • Event
Deprecated:
  • Utilize on('beforePost', listener).
Example
grid.onBeforePost.set( function ( grid ) {
   if (grid.ds.password != grid.ds.confirmPassword ){
    throw new Error( "A nova senha e a confirmação são diferentes.
             Digite novamente a senha." )
   }
})

onBeforePrepare :Event

Evento executado antes da preparação da grade O evento recebe os seguintes parâmetros:

  • grid: grade que está sendo preparada.
Type:
  • Event
Example
grid.onBeforePrepare.set(function (grid) {
})

onBeforeScroll :Event

Evento que será disparado antes da navegação de um registro para um outro em uma grade associada a um DataSet. Também será disparado assim que a grade for escrita quando se posicionar no primeiro registro da grade.
No exemplo abaixo é dado um alerta informando o número do registro em que se estava posicionado, caso a grade não esteja vazia.
O evento recebe os seguintes parâmetros:

  • grid: grade em que se deve aplicar o evento.
Type:
  • Event
Deprecated:
  • Utilize on('beforeScroll', listener).
Example
grid.onBeforeScroll.set( function ( grid ){
   if (grid.ds.recNo > 0 ){
    grid.process.alert( "Você estava no registro: " + grid.ds.recNo )
   }
})

onBeforeSelectRecord :Event

Evento que será disparado antes de um registro ser selecionado ou desmarcado.

Type:
  • Event

onChangeView :Event

Evento que será emitido quando for alterado o modo de visão da grade.
A grade poderá ter seu modo de visão alterado a partir da propriedade viewMode que irá emitir este evento, ao chamar esse evento a propriedade viewMode estará com seu valor anterior à mudança de visão.
A grade também pode ter seu modo de visão alterado quando for chamado o grid.write() que possui um parâmetro que determina em que modo será escrita a grade.
No exemplo abaixo quando o modo de visão da grade é alterado são alterados também os botões visíveis pois algumas delas não fazem sentido em um ou outro modo de visão. Como a modificação deve ser do modo formulário para tabela e vice-versa, é utilizado uma expressão condicional para analisar o valor do viewMode.
O evento recebe os seguintes parâmetros:

  • grid: grade a qual está sendo modificado o modo de visão;
Type:
  • Event
Deprecated:
  • Utilize on('changeView', listener).
Example
grid.onChangeView.set( function ( grid ){
   if (grid.viewMode === Grid.TABLEVIEW ){
   grid.parent.visibleButtons = ['Recarregar grades'];
  } else {
   grid.parent.visibleButtons = ['Editar', 'Recarregar grades'];
  }
})

onDefineFields :Event

Evento que deve ser utilizado para configurar os campos de uma grade. Todas as definições de campo devem ser declaradas através deste evento.
Customizações fora deste evento serão perdidas caso sejam alteradas as propriedades "classKey" ou "ds" da grade, ou seja, após ser executado o método Grid.refresh().
O evento recebe os seguintes parâmetros:

  • grid: grade em que serão definidos os campos.
Type:
  • Event
Example
grid2.onDefineFields.set( function ( grid2 ){
   var fld = grid2.field( "matricula", "integer" )
   fld.size = 6
   fld.readOnly = true
   fld.label = "Número de matrícula"
   fld.help = "Número da matrícula do aluno"

   var fld = grid2.field( "disciplina", "String", 10 )
   fld.size = 6
   fld.readOnly = true
   fld.label = "Disciplina"
   fld.help = "Código das disciplinas cadastradas para esse aluno"
})

onExport :Event

Evento que será executado quando o botão de exportar da grade for acionado. Ele substitui o comportamento padrão da grade.
O exemplo abaixo seleciona o campo "teste" do dataExporter e modifica seu label para "Testing". O evento recebe os seguintes parâmetros:

  • dataExport: Objeto DataExportGrid que é usado para exportação de dados da grade;
Type:
  • Event
Deprecated:
  • Utilize on('export', listener).
Example
grid.onExport.set(function ( dataExport ) {
   dataExport.getField("teste").label = "Testing"
 });

onLocate :Event

Evento que será executado quando a grade for localizar algum conteúdo. A grade automaticamente adiciona um evento de pesquisa padrão que pode ser estendido.
O exemplo abaixo personaliza a busca para permitir que sejam buscados apenas números e executa o evento padrão através do "inherited".
O evento deverá retornar um valor booleano, sendo true para indicar que localizou o registro. O dataSet da grid deve ser posicionado no registro localizado. O evento recebe os seguintes parâmetros:

  • grid: Grade que está sendo pesquisada;
  • value: Valor a ser localizado;
  • options: Array que contém as opções a serem aplicadas na localização, podem ser: (opcional)
    Grid.LOCATE_ALL_FIELDS: Opção que indica se deverá localizar em todos os campos;
    Grid.LOCATE_EXACT: Opção que indica se deverá localizar um valor idêntico;
    Grid.LOCATE_NEXT: Opção que indica se deverá localizar da próxima ocorrência;
Type:
  • Event
Deprecated:
  • Utilize on('locate', listener).
Example
grid.onLocate.set( function ( grid, value ) {
    if (typeof value == 'number') {
    var found = inherited( grid, value )
     if (found ) {
        grid.process.setNextInteraction('interactionName')
     }
    return found
   } else {
    throw new Error('Não é possível localizar valores diferentes de números!')
   }
})

onShowLog :Event

A grade possui o botão de log que ao ser acionado exibe o histórico de alterações do registro corrente. Este evento será executado quando o botão de log da grade for acionado. Ele substitui o comportamento padrão da grade.
O exemplo abaixo chama a interação "run" e passa como parâmetros ['chave', key].
O evento recebe os seguintes parâmetros:

  • grid: grade em que foi acionado o botão de log;
Type:
  • Event
Deprecated:
  • Utilize on('showLog', listener).
Example
grid.onShowLog = function ( grid ) {
   var key = grid.ds.ikey
    grid.process.setNextInteraction('run', ['chave', key], -1898143458)
   }
})

parent :Object

Objeto que contém visualmente a grade. Atualmente a grade pode ser criada apenas pelo Process.grid ou definindo um campo do tipo "grid", logo este objeto poderá ser apenas Process ou Field.

Type:
  • Object

process :uwi.process.Process

Referência ao processo onde a grade foi criada. Atualmente a grade pode ser criada apenas pelo Process.grid ou definindo um campo do tipo "grid".

Type:
  • uwi.process.Process

readOnly :Boolean

Indica se a grade será somente para leitura, não permitindo assim que o usuário faça alterações nos seus valores.

Type:
  • Boolean

selectedRecords :Array.<string>

Array com os bookmarks (marcadores) dos registros que estão selecionados na grade. Quando o dataset estiver no estado de inserção no modo formulário, será retornado um array vazio.

Type:
  • Array.<string>

tableViewFieldNames :string

Contém os nomes dos campos que irão compor o modo tableView (modo tabela).
Os nomes devem estar separado por ponto-e-vírgula (";"). Caso esta propriedade não seja definida então todos os campos serão exibidos de acordo com as respectivas propriedades de visão.

Type:
  • string
Example
grid.tableViewFieldNames = "nome; idade; cpf"

title :string

Título atribuído à grade. Caso não seja definido, então será utilizado o valor contido no parâmetro "name" definido durante a criação da grade.

Type:
  • string
See:
  • Process#grid

toggledViewFieldsVisibility_ :Object.<string, boolean>

Campos visualizáveis.

Type:
  • Object.<string, boolean>

toggleKeyButtonEnabled :boolean

Indica se o botão Toggle Key ("Mostrar/Ocultar chaves") está habilitado na grade.

Type:
  • boolean
Default Value:
  • true

toolbar :Object

Configurações da barra de ferramentas da grid.
A barra de ferramentas possui controles de navegação, busca, exportação, duplicação e outros botões criados pelo usuário.
Propriedades disponíveis:

  • visible: indica se a barra de ferramentas será exibida.
Type:
  • Object
Example
this.grid('test').toolbar.visible = false; // torna a barra invisível

unselectableRecords :Array

Array com os bookmarks (marcadores) dos registros que não poderão ser selecionados pelo usuário.

Type:
  • Array

userCanExport :boolean

Indica se o usuário pode exportar dados da grade.

Type:
  • boolean

userKeyToValidatePermissions :number

Chave do usuário que será utilizada para validar o acesso de inserção, alteração e exclusão dos dados da grade. Caso não seja informado, será considerado session.userKey, que seria a chave do usuário que estiver logado no sistema.

Type:
  • number

<non-null> validateFieldPermissions :boolean

Indica se a grade deve validar se o usuário possui permissão de visão e alteração dos campos. Estas permissões são obtidas da tabela iPermission, a partir dos campos iVisibleFieldNames e iChangeableFieldNames.

Type:
  • boolean

viewMode :number

Propriedade que indica o modo de visão da grade. A alteração desta propriedade implica na alteração do modo de visão da grade no navegador.
Por padrão a grade é escrita no modo TABLEVIEW (modo tabela) exceto quando no grid.write() for especificado que deverá ser escrita em modo FORMVIEW (modo formulário).
O exemplo a seguir modifica o modo de visão da grade do modo tabela para o modo formulário.
Pode assumir os seguintes valores:

  • Grid.FORMVIEW: modo formulário.
  • Grid.TABLEVIEW: modo tabela.
Type:
  • number
Example
if (grid.viewMode === Grid.TABLEVIEW ){
    grid.viewMode = Grid.FORMVIEW
 }

visibleActions :Array.<(Button|string)>

Type:
Deprecated:
  • Utilize a propriedade visibleButtons.
See:
  • Grid#visibleButtons

visibleButtons :Array.<(Button|string)>

Nomes ou as instâncias dos botões que devem estar visíveis na grade. A ordem dos botões será alterada para refletir a ordem informada nesta propriedade.

Type:
See:
  • Grid#enabledButtons

width :string

Indica o tamanho que a grade assumirá na tela. Por padrão, a grade se auto redimensionará conforme o seu conteúdo, mas é possível indicar um valor fixo que esta deverá assumir.
Atenção:

  • O valor não poderá ser menor que o tamanho mínimo de todos os campos da grade, caso contrário esta irá ter um comportamento estranho.
  • O valor informado estará em pixels.
Type:
  • string
Example
grid.width = "100" // grade terá 100 pixels
grid.width = 1000 // grade terá 1000 pixels

Methods


<static> persist(grids)

Realiza persistência para DataSets de um conjunto de grades e das suas filhas.

Parameters:
Name Type Description
grids Grid | Array.<Grid>

Grades cujos DataSets serão persistidos.

Returns:

Versão das alterações.

Type
number

_canInsertRecord(classKey, userKey, permissionFieldName, classField)

Verifica se o usuário pode inserir registros da classe informada.

Parameters:
Name Type Description
classKey number

Classe do registro.

userKey number

Chave do usuário.

permissionFieldName string

Nome da permissão que irá avaliar o poder do usuário.

classField Field

Campo da grade utilizado para armazenar a classe do registro.

Returns:

True se o usuário pode inserir o registro.

Type
boolean

_defaultOnShowLog()

Evento padrão de log.


_newTableViewRecordBuffer(bufferIdx, syncCommands)

Cria um novo buffer de registro na posição informada da coleção tableViewBuffer.

Parameters:
Name Type Description
bufferIdx number

Posição do novo buffer.

syncCommands Array

Array que irá receber os comandos que precisam ser enviados para o cliente no sincronismo.

Returns:

Retorna o buffer criado.

Type
RecordBuffer

action()

Deprecated:
  • Utilize o método button.
See:
  • Grid#button

button(name [, opt_target] [, opt_order] [, opt_processKey] [, opt_newTab])

Cria um botão na grade se não existir um com o nome informado. Caso exista, será retornada a instância criada anteriormente.

Parameters:
Name Type Argument Description
name string

Nome do botão. O valor informado também será utilizado como o texto do botão, caso a propriedade label do botão não seja informada.

opt_target string | function <optional>

Poderá ser informado:

  • nome de uma interação;
  • nome de uma atividade;
  • função que será atribuída ao evento onClick do botão.
    Se "target" for uma string vazia e o parâmetro "processKey" for informado, será considerado como destino a primeira interação do processo destino.
    Este parâmetro será opcional apenas quando deseja-se obter a instância de um botão existente.
opt_order number <optional>

Ordem do botão na barra de botões. Prefira utilizar a propriedade Grid.visibleButtons.

opt_processKey number <optional>

Indica a chave do processo que contém a atividade ou interação informada no parâmetro "target". Será considerado o processo corrente quando não for informado.

opt_newTab boolean <optional>

Indica se deve ser criada uma nova aba para exibir a interação ou atividade informada em "target". Considerado "false" quando não for informado.

See:
  • Grid#Button
Returns:

Botão existente com o nome informado ou uma nova instância caso não exista um com o nome informado.

Type
Button
Example
grid.button("Tornar maiúsculas", function (bt){
   var grid = bt.parent
   var ds = grid.ds
   var selectedRecords = grid.selectedRecords
   for (var i = 0; i < selectedRecords.length; ++i){
     ds.bookmark = selectedRecords[i]
     ds.nome = ds.nome.toUpperCase()
   }
 })

clearButtons()

Limpa os botões da grade.


colapse(nodeValue)

Minimiza o nó solicitado na árvore. Ao se chamar o colapse, a grade garante que a hierarquia de nós será minimizada.

Parameters:
Name Type Description
nodeValue string

Nó que deve ser minimizado.


declareGetterAndSetter_(fieldName, gridName)

Constrói um método getter and setter no processo para acessar o valor do campo informado.

Parameters:
Name Type Description
fieldName string

Nome do campo.

gridName string

Nome da grade.


del( [handleDetailGrid])

Exclui da grade e consequentemente do dataSet o(s) registro(s) selecionado(s) na grade. É executado quando for acionado o botão representado por um "-" na grade.

Parameters:
Name Type Argument Description
handleDetailGrid boolean <optional>

Indica se a deleção está sendo chamada por causa de um tratamento de deleção de uma grade master.


duplicateRecord(opt_bookmark)

Duplica um registro da grade.

Parameters:
Name Type Argument Description
opt_bookmark string <nullable>

Identificação do registro que será duplicado. Caso não seja informado, será duplicado o registro corrente.


emit()


expand(nodeValue)

Expande o nó solicitado na árvore. Ao se chamar o expand, a grade garante que a hierarquia de nós será expandida.

Parameters:
Name Type Description
nodeValue string

Nó que deve ser expandido.


field(name [, opt_type] [, opt_size])

Método utilizado para criar ou acessar um campo na grade.
Os campos devem ser criados dentro do evento onDefineFields() da grade, caso queira acessar um campo previamente criado, basta informar o primeiro parâmetro "name".

Parameters:
Name Type Argument Description
name string

Nome que servirá como identificador do campo.
Atenção: Não podem ser definidos nomes que conflitem com propriedades/métodos da grade.

opt_type string <optional>

Tipo do campo.
Tipos existentes:

  • "string";
  • "integer";
  • "date";
  • "number";
  • "boolean";
  • "combo";
  • "memo";
opt_size number <optional>

Tamanho do campo. Indica o número de caracteres que o campo suportará.
Este valor também servirá de base para obtenção da largura do campo.
É necessário apenas em campos do tipo "string" ou "memo";

Returns:

Campo recém criado ou existente que possua o nome informado.

Type
Field
Example
var grid = this.grid("gradeExemplo");
grid.onDefineFields.set(function (grid) {
    // Cria um campo do tipo string com identificador "nome" e tamanho 20.
    var fld = grid.field("nome", "string", 20);
    // Cria um campo do tipo integer com identificador "matricula".
    fld = grid.field("matricula", "integer");
    // cria um campo do tipo date com identificador "data".
    fld = grid.field("data", "date");
});

formatEventId(eventType [, opt_field])

Cria uma identificação para o evento para fins de log. A identificação conterá, sempre que for possível, o processo, a grade e o evento, permitindo que o desenvolvedor localize o código que declarou o evento a partir da mensagem de log.

Parameters:
Name Type Argument Description
eventType string

Evento a ser identificado.

opt_field GridField <optional>

Caso seja um evento de campo, deve ser informada a instância do campo.


getFieldsAsStringList()

Mantém compatibilidade para quem precisa acessar a lista de fields como um objeto lista de Strings. Esse método seleciona os campos da grade e os coloca em um objeto StringList, retornando-o.

Returns:

Campos da grade.

Type
StringList

getFieldsByProperty(propertyName)

Retorna uma lista de campos cuja propriedades tenham os valores informados.

Parameters:
Name Type Argument Description
propertyName * <repeatable>

Há múltiplas formas de definição dos parâmetros, veja o exemplo abaixo.

Returns:

Lista de campos.

Type
Array.<Field>
Example
//Propriedade e valor:
 //Nessa forma serão obtidos os campos que possuem as propriedades fornecidos
 //com os respectivos valores.
 getFieldsByProperty('prop', valor, 'prop2', valor2);

 //Array de propriedades e de valores:
 //Nessa forma serão fornecidos dois arrays, o primeiro array é o de propriedades
 //que se relaciona com o segundo array, que é o de valores, pelo índice.
 getFieldsByProperty(['prop', 'prop2'], [valor, valor2]);

 //Através de um callback
 //Nesta forma são obtidos os campos de acordo com a regra definida no callback.
 getFieldsByProperty(function (field) {
   return field.required === true;
 });

getFormattedHelp()

Devolve a ajuda formatada grade.

Returns:

Ajuda formatada.

Type
string

getKeyField()

Retorna o campo que contém a chave dos registros, ou nulo caso não o encontre.

Returns:

O campo chave da grade.

Type
Field

getLookupCallerField()

Obtém o campo que disparou a exibição da grade, caso ela seja a grade de Lookup.

Returns:
Type
Field

getSelectedRecords( [opt_viewMode])

Retorna os registros selecionados da visão da grade informada no parâmetro. Caso a visão não seja informada, será utilizada a visão atual. Para a visão formulário, será retornado um array com o bookmark do registro posicionado no momento. Quando o dataset estiver no estado de inserção, o getSelectedRecords() retornará um array vazio.

Parameters:
Name Type Argument Description
opt_viewMode number <optional>

Modo de visão a partir da qual se deseja saber quais os registros selecionados. Os valores possíveis são: Grid.FORMVIEW e Grid.TABLEVIEW.

Deprecated:
  • Utilize #selectedRecords ou #getSelectedRecordsAtView.
Returns:

Array com os bookmarks dos registros selecionados.

Type
Array

getSelectedRecordsAtView( [viewMode])

Retorna os registros selecionados da visão da grade informada no parâmetro.

Parameters:
Name Type Argument Description
viewMode number <optional>

Modo de visão a partir da qual se deseja saber quais os registros selecionados. Os valores possíveis são: Grid.FORMVIEW e Grid.TABLEVIEW.

Returns:

Array com os bookmarks dos registros selecionados.

Type
Array

handleSync()

Trata uma solicitação de sincronismo da grade cliente.

Returns:

Retorna os comandos de sincronismo do protocolo IFP.

Type
string

hasDataSet()

Verifica se a grade está associada a um dataSet.

Returns:

True se a grade for associada a um dataSet. False se for uma grade de variáveis ou se for uma grade não inicializada.

Type
boolean

lookup(field)

Dispara grade lookup em campos da grade que estejam relacionados com registros de uma tabela.

Parameters:
Name Type Description
field GridField

Campo que possui a propriedade lookup definida.


persist()

Realiza persistência para DataSets da grade e de suas filhas. Essa deve ser a forma recomendada de realizar a persistência de uma grade. A exceção é para quando são utilizados objetos de gestão responsáveis por gravar as alterações realizadas no DataSet informado à grade.

Returns:

Versão das alterações.

Type
number

post( [opt_doParentPost])

Efetiva as alteração o registo corrente esteja em estado de edição ou inserção.

Parameters:
Name Type Argument Description
opt_doParentPost boolean <optional>

Indica que deve ser realizada a efetivação do registro mestre caso esta seja uma grade detalhe. Caso não seja informado, será considerado true.

Fires:
  • ngin.classdef.Events#event:beforePost
  • ngin.classdef.Events#event:validate
  • ngin.classdef.Events#event:afterPost
Returns:

True se a edição ou inserção foi efetivada, false caso o registro não estivesse em edição ou inserção, ou se um listener do evento post preveniu a ação padrão.

Type
boolean

refresh( [opt_force])

Reinicia a estrutura da grade tanto no servidor quanto no cliente. Possibilitando assim que as alterações feitas após o grid.write() entrem em vigor.

Sempre que uma alteração é realizada na estrutura da grade (criação de um campo por exemplo) esta entrará em vigor somente após ser feito o grid.refresh() da grade.

Importante: ao executar este método a grade irá requerer uma recarga das suas configurações. Para que não haja perda de configurações, as definições de campos necessariamente devem ser realizadas dentro do evento defineFields e as definições das grades detalhes no evento defineGrid.

Parameters:
Name Type Argument Description
opt_force boolean <optional>

Indica se o refresh deverá ser realizado mesmo para uma grade que acabou de ser escrita, ou seja logo após ser realizado o grid.write(), ou se pode ser realizado refresh múltiplas vezes.


resetFields()

Redefine os valores de todos os campos do registro que esteja em foco na grade.
Caso seja um campo não-calculável, para o seu valor padrão, onde o valor padrão seria o Field.defaultValue, ou seja, a sugestão de preenchimento do campo.


scroll(action)

Executa um método de navegação do dataset ('first', 'next', 'prior' ou 'last') ou função passada como parâmetro, disparando os eventos de scroll da grade e atualizando os filtros das grades detalhes.

Parameters:
Name Type Description
action string | function

Método que deve ser invocado no dataset ou uma função que será executada recebendo o dataset com argumento.


setFieldsProperties()

Este método cria ou seta as propriedades informadas com os valores informados em cada campo da definido nos parâmetros. Para utilizar esse método existem diversas formas de o invocar, veja os exemplo abaixo.

Example
// Array de campos com callback para setar as propriedades:
 fl.setFieldsProperties([field1, field2], function (field) {
   field.prop = valor;<br>
   field.prop2 = valor2<br>
 });

 // Array com os nomes dos campos com callback para setar as propriedades:
 fl.setFieldsProperties(['campo1','campos2'], function (field) {
   field.prop = valor; field.prop2 = valor2
 });

 // String com o nomes dos campos separados por virgula ou ponto e virgula como primeiro
 // parâmetro.
 // Array com nomes das propriedades a serem definidas como segundo parâmetro.
 // Array com os valores a serem definidos nas propriedades de mesmo índice como terceiro
 // parâmetro.
 fl.setFieldsProperties('campo1,campos2', ['prop', 'prop2'], [valor, valor2]);

 // Ainda na forma anterior pode ser utilizado o caractere '*' para obter todos os campos.
 fl.setFieldsProperties('*', ['prop', 'prop2'], [valor, valor2]);

 // Lista de strings separados por vírgula ou ponto e virgula com os nomes dos campos a
 // serem alterados como primeiro parâmetro.
 // Os parâmetros seguintes são os nomes das propriedades com os valores que devem ser
 // atribuídos.
 fl.setFieldsProperties('campo1,campos2', 'prop', valor, 'prop2', valor2);

toggleFieldVisibility(field)

Alterna a visibilidade de um campo da grade nos dois modos de visão.

Parameters:
Name Type Description
field string | Field

O campo ou nome do campo a ter a visibilidade chaveada.


toggleKeyVisibility()

Alterna a visibilidade do campo CHAVE ou iKey, caso o campo esteja presente.


write( [opt_showInFormView] [, opt_noWriteInClient])

Método utilizado para escrever a grade na tela após serem configurados os eventos e os seus campos.
Qualquer alteração na estrutura da grade após ser realizado o grid.write() só entrará em vigor após ser realizado um grid.refresh(), que atualiza a estrutura de uma grade que já foi escrita.
Por padrão a grade é escrita em modo tabela.

Parameters:
Name Type Argument Description
opt_showInFormView boolean <optional>

Indica se deverá escrever a grade no modo formulário.

opt_noWriteInClient boolean <optional>

Indica que o write não deve ser efetivado para o browser. É de uso interno da grade e não deve ser utilizado. Este parâmetro será removido no futuro.

Events


afterCancel

Evento emitido após o cancelamento de uma inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição. Importante: no momento da emissão deste evento o DataSet já concluiu o cancelamento da edição ou inserção, portanto a propriedade data não terá os dados do registro cancelado.

Type: GridEvent
See:

afterDelete

Evento que será emitido após a exclusão de um registro associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.

Type: GridEvent
See:

afterDuplicate

Evento que será emitido após um registro ser duplicado. Seu uso é recomendado para realizar sugestões de valores para o registro novo, recém duplicado.

Type: GridEvent
See:
Example
grid.on('afterDuplicate', function (evt) {
   evt.grid.process.alert('Registro duplicado.');
 });

afterEdit

Evento emitido depois de uma edição de um registro associado a classe de dados ter sido iniciada. Seu uso é recomendado para atualizar informações que indiquem o momento ou o usuário que está realizando a modificação.

Type: GridEvent
See:
Example
// O exemplo abaixo pega o último horário em que o registro entrou em edição e grava
 // este valor em um campo somente leitura para o usuário
 on('afterEdit', function (evt) {
   evt.data.modificado = new Date();
   evt.data.modificador = session.userKey;
 });

afterExpand

Evento emitido depois de um registro ser expandido pelo usuário.

Type: TreeExpandEvent

afterInsert

Evento emitido após a inserção de um registro associado a classe de dados. Seu uso é recomendado para sugerir os valores dos campos do novo registro, simplificando o preenchimento dos dados para o usuário.

Type: GridEvent
See:

afterPost

Evento emitido depois da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.

Type: GridEvent
See:
Example
on('afterPost', function (evt) {
   if (evt.data.recordCount > 5) {
     logger.debug('Registrado mais de 5 registros');
   }
 })

afterPrepare

Evento emitido após a preparação da grade. A preparação da grade ocorre quando ela é escrita pela primeira vez na interface pelo método Grid#write.

Type: GridEvent
Deprecated:
  • Prefira utilizar o evento "defineFields".
See:

afterScroll

Evento emitido após a navegação de um registro para um outro em uma grade associada a um DataSet. Também será emitido assim que a grade for escrita, momento em que ela se posicionar no registro corrente do DataSet.

Type: GridEvent
See:

afterSelectRecord

Evento que será emitido após um ou mais registros serem marcados ou desmarcados na grade.

Type: GridEvent
See:

beforeCancel

Evento emitido antes de cancelar a inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição, ou para realizar algum tipo de confirmação, no caso deste evento estar sendo emitido em um contexto de interface.

Type: GridEvent
See:

beforeDelete

Evento emitido antes da exclusão de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a remoção de um registro em uma classe de dados.

Type: GridEvent
See:
Example
on('beforeDelete', function (evt) {
   if (session.userKey !== ngin.keys.Users.ADMINISTRATOR) {
     throw new Error('Apenas o usuário "administrator" pode excluir este registro.');
   }
 });

beforeDuplicate

Evento que será emitido antes de um registro seja duplicado. Seu uso é recomendado para verificar regras de negócio que indiquem se o registro pode ou não ser duplicado.

Type: GridEvent
See:
Example
grid.on('beforeDuplicate', function (evt) {
   evt.grid.process.alert('Duplicando registro em ' + evt.grid.name + '.');
 });

beforeEdit

Evento emitido antes da edição de um registro da grade de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a edição de um registro da classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não encontra-se em estado de edição, portanto o registro corrente não deve ser modificado.

Type: GridEvent
See:

beforeExpand

Evento emitido após um registro ser expandido em uma grade em árvore. O conceito de expansão e contração de registros existe apenas quando há campos do tipo "tree" em uma grade.

Type: TreeExpandEvent

beforeInsert

Evento emitido antes da inserção de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a inserção de um novo registro em uma classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não possui dados do registro a ser inserido, portanto o registro corrente não deve ser modificado.

Type: GridEvent
See:

beforePost

Evento emitido antes da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar validações se os dados do registro não ferem regras de negócio.

Type: GridEvent
See:
Example
// O exemplo abaixo verifica se os valores nos campos "password" e "confirmPassword"
 // são iguais, ou seja, se o usuário digitou uma senha e a confirmou corretamente,
 // em caso negativo exibe um erro, impedindo que o registro seja inserido.<br>
 // O evento recebe os seguintes parâmetros:<br>
 on('beforePost', function (evt) {
   if (evt.data.password !== evt.data.confirmPassword) {
     throw new Error('A nova senha e a confirmação são diferentes. Digite novamente a senha.');
   }
 });

beforePrepare

Evento emitido antes da preparação da grade. A preparação da grade ocorre quando ela é escrita pela primeira vez na interface pelo método Grid#write.

Type: GridEvent
Deprecated:
  • Prefira utilizar o evento "defineFields".
See:

beforeScroll

Evento que será emitido antes da navegação de um registro para um outro em uma grade associada a um DataSet. Também será emitido assim que a grade for escrita, momento em que ela se posicionar no registro corrente do DataSet.

Type: GridEvent
See:
Example
// No exemplo abaixo é dado um alerta informando o número do registro em que
 // se estava posicionado, caso a grade não esteja vazia.<br>
 grid.on('beforeScroll', function (evt) {
   if (evt.data.recNo > 0) {
     evt.process.alert('Você estava no registro: ' + evt.data.recNo);
   });
 })

beforeSelectRecord

Evento emitido quando um registro é marcado ou desmarcado, ou quando o usuário pressiona o botão inverter seleção. Este evento é emitido antes da seleção ocorrer, permitindo que o desenvolvedor possa alterar a seleção do usuário.

Type: BeforeSelectRecordEvent
Example
grid.on('beforeSelectRecords', function (evt) {
   var selected = createSet(evt.grid.selectedRecords);
   var alreadySelected = goog.array.some(evt.bookmarks, function (bmk) {
     return bmk in selected;
   });
   if (alreadySelected) {
     evt.process.alert('Não é permitido selecionar o registro mais de uma vez.');
     evt.bookmarks = [];
   }
 });

changeView

Evento que será emitido quando for alterado o modo de visão da grade.
A grade poderá ter seu modo de visão alterado a partir da propriedade viewMode que irá disparar este evento, ao chamar esse evento a propriedade viewMode estará com seu valor anterior á mudança de visão.
A grade também pode ter seu modo de visão alterado quando for chamado o grid.write() que possui um parâmetro que determina em que modo será escrita a grade.

Type: GridEvent
See:
Example
// No exemplo abaixo quando o modo de visão da grade é alterado são alterados
 // também os botões visíveis pois algumas delas não fazem sentido em um ou outro
 // modo de visão. Como a modificação deve ser do modo formulário para tabela e
 // vice-versa, é utilizado uma expressão condicional para analisar o valor do viewMode.<br>
 grid.on('changeView', function (evt) {
   if (evt.grid.viewMode === Grid.TABLEVIEW ){
     evt.grid.visibleButtons = ['Redefinir Grade'];
   } else {
     evt.grid.visibleButtons = ['Editar', 'Recarregar grades'];
   }
 });

defineFields

Evento que deve ser utilizado para configurar os campos de uma grade. Todas as definições de campo devem ser declaradas através deste evento.
Configurações de campos realizadas fora deste evento serão perdidas caso sejam alteradas as propriedades Grid#classKey ou Grid#ds, ou caso seja executado o método Grid#refresh.

Type: GridEvent
See:
Example
grid.on('defineFields', function (evt) {
   var fld = evt.grid.field('matricula', 'integer');
   fld.size = 6;
   fld.readOnly = true;
   fld.label = 'Número de matrícula';
   fld.help = 'Número da matrícula do aluno.';

   fld = evt.grid.field('disciplina', 'string', 256);
   fld.size = 6;
   fld.readOnly = true;
   fld.label = 'Disciplina';
   fld.help = 'Código das disciplinas que serão cursadas por este aluno.';
 });

export

Evento que será emitido quando o botão de exportar da grade for acionado.

Type: GridExportEvent

locate

Evento que será emitido quando a grade for localizar um conteúdo.
O comportamento padrão de localização da grade poderá ser substituído fazendo uso do método ngin.event.Listener#replaceListeners.

Type: uwi.classdef.GridLocateEvent
Example
// O exemplo abaixo personaliza a busca para permitir que sejam buscados apenas
 // números e executa o evento padrão através do "inherited".<br>
 // O evento deverá retornar um valor booleano, sendo true para indicar que localizou
 // o registro. O dataSet da grid deve ser posicionado no registro localizado.
 grid.replaceListeners('locate', function (evt, replacedEmit) {
   if (typeof evt.value !== 'number') {
     replacedEmit(evt)
     if (replacedEmit.locatedField) {
       grid.process.setNextInteraction('interactionName')
     }
   } else {
     throw new Error('Não é possível localizar valores diferentes de números!')
   }
 });

showLog

A grade possui o botão de "Log" que ao ser acionado exibe o histórico de alterações do registro corrente. Este evento será emitido quando esse botão for acionado.
O processo padrão de histórico de alterações da grade poderá ser substituído fazendo uso do método ngin.event.Listener#replaceListeners.

Type: GridEvent
See:
Example
grid.replaceListeners('showLog', function (evt) {
   evt.grid.process.setNextInteraction('run', ['chave', evt.data.ikey], -1898143458);
   evt.preventDefault();
 });