Filtrando os valores no DataSourceQuery por classe

Data de postagem: Aug 17, 2010 12:53:37 PM

Os filtros do DataSourceQuery possuem a propriedade classKey, cuja finalidade é filtrar os valores informados em um campo classe. Dessa forma, o DataSourceQuery verifica se os valores no campo são a própria classe informada ou suas filhas.

Vejamos os exemplo abaixo:

Vamos usar a seguinte definição para o DataSource:

{ 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 após 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(); } }

Vamos usar a seguinte definição para o DataSourceQuery:

{ /* /products/custom/Testes/paulorogerio/datasource/Exemplo 000.ids */ dataSourceKey: 40108470, filters: [ {name: "PED_CLASSE", classKey: -1899998945 /* C Energia */ } ], columns: [ {name: "PED_RECURSO.NOME"}, {name: "PED_QUANTIDADE"}, {name: "PED_UNITARIO"} ], orderBy: "PED_RECURSO.NOME" }

Caso algum valor informado falhe na validação de classe, será gerado um erro informando qual dos valores fugiu à regra. Como exemplo, se executarmos o DataSourceQuery definido acima, obteremos o seguinte erro:

O valor ’-2008879000 (Pedidos ou Provisões)’ do filtro PED_CLASSE não é uma classe filha de ’-1899998945 (C Energia)’.