Exibindo colunas de agrupamento de um DataSet pivoteado fora da Tree

Data de postagem: Feb 17, 2011 3:44:20 PM

Visão geral

Ao configurar um IDSQ para usar o recurso de pivoteamento dos dados do DataSource, os campos de agrupamentos de dados são exibidos em árvore. Ocorre que em alguns casos é desejável que o campo agrupador não seja exibido na árvore, mas na mesma linha que aparecem os valores agregados.

As imagens abaixo exemplificam melhor esta necessidade:

Figura 01: O campo Código do produto, como é um campo agrupador, aparece por padrão na árvore

Figura 02: Deseja-se retirar o campo da Tree e criar uma coluna no SimpleLayout para exibilo fora da árvore

Esta configuração é realizada através da propriedade useToGroup; uma vez que a exibição na árvore é feita através de agrupamento de colunas, se indicarmos o valor de useToGroup de uma coluna como falso, a coluna não será agrupada.

A propriedade showOutOfTree, que possuia o mesmo objetivo, foi descontinuada. Quando utilizada, ela utilizava a lógica contrária a useToGroup - as colunas eram removidas do agrupamento se showOutOfTree fosse verdadeira. Esse comportamento ainda é mantido por questões de compatibilidade.

Segue um exemplo do uso da propriedade useToGroup.

Código do IDS:

{

includes: [

-1897036629 /* /products/INTEQengine/library/iquery/IQuery.ijs */

],

help: "Help do DataSource",

availableFilters: [

{

classKey: -2008879000 /* Pedidos ou Provisões */,

prefix: "PED",

options: {}

}

],

availableColumns: [

{

classKey: -2008879000 /* Pedidos ou Provisões */,

prefix: "PED"

}

],

//Chamado durante a construção do DataSource.

onCreate: function Exemplo000_onCreate(dataSource) {

var flt = dataSource.filters.filter("PED_EMISSAO_START")

flt.help = "Data de Emissão Inicial"

var flt = dataSource.filters.filter("PED_EMISSAO_END")

flt.help = "Data de Emissão Final"

},

onGetQuery: function Exemplo000_onGetQuery(dataSource, filters, columns) {

var flts = filters.getIQueryFilters( "PED_*", "and" )

var cols = columns.getIQueryColumns( "PED_*" )

var iquery = IQuery.from( -2008879000 /* Pedidos ou Provisões */ )

.where(flts)

.column(cols)

return iquery.toSql()

}

}

Código do IDSQ:

{

dataSourceKey: 40108470 /* /products/custom/Testes/paulorogerio/datasource/Exemplo 001.ids */,

filters: [

{name: "PED_EMISSAO_START"},

{name: "PED_EMISSAO_END"}

],

columns: [

{name: "PED_RECURSO.NOME", alias: "Produto"}, //Campo de agrupamento

{name: "PED_RECURSO.CODIGO", alias: "Codigo"}, //Campo pivot vertical

{name: "PED_QUANTIDADE", aggregate: "sum", alias: "Qtde"}, //Campo totalizador

{name: "PED_TOTAL", aggregate: "sum", alias: "Vlr"}, //Campo totalizador

{name: "PED_EMISSAO", pivot: true} //Campo pivot horizontal

]

}

Código do IDSV:

{

dataSourceQueryKey: 40108558 /* /products/custom/Testes/paulorogerio/datasource/Exemplo 001 - Pivot.idsq */,

type: "simpleLayout",

filters: [

{name: "PED_EMISSAO_START", label: "Inicial", group: "Emissão"},

{name: "PED_EMISSAO_END", column: 1, label: "Final", group: "Emissão"}

],

columns: [

{name: "PED_RECURSO.NOME"},

{name: "PED_RECURSO.CODIGO", useToGroup: false, label: "Código"},

{name: "PED_EMISSAO", columnGroup: "EMISSÃO DO PEDIDO", columnGroupType: "groupByTotalField"}, //Pode ser: "none", "groupByTotalField" ou "groupByPivotValue" (o valor default é "groupByTotalField")

{name: "PED_QUANTIDADE"},

{name: "PED_TOTAL"}

]

}