Olá pessoal! Firme?
Estou com um probleminha com um AdvancedDataGrid e não sei nem como
explicar direito, mas vamos lá!
Por favor vejam essa imagem:
http://flexdev.googlegroups.com/web/img.gif?gda=p2MZcTkAAAD7Tl1Myh4933faKLuFvqp_c2jpWfwwt4vsXHei7f4-faLtiNLud0F8ZpwUWFrGskmECKgQbmraGdxlZulaYnsh&gsc=Axj7nQsAAADdteujMY4chXURU-Ssa-Lx
Meu ADG faz dois agrupamentos: um por "referência" (que é o endereço
do local; segundo nível) e por data (primeiro nível).
Eu utilizo o summaryFunction para poder gerar aquela última coluna que
é uma média dos valores.
O problema: quando o usuário escolher as informações de TEMPO, o maior
nível (de data) deverá apresentar uma SOMA das médias dos níveis
abaixo e não uma média deles (como está agora).
No exemplo da imagem ele mostra 9.26 na coluna B/C, porém deveria ser
18.52, que é a soma das duas médias.
O código para gerar esse agrupamento (que é dinâmico) é o seguinte:
----------------------
private function gerarAgrupamento():void {
var myGColl:GroupingCollection2 = new GroupingCollection2();
var group:Grouping = new Grouping();
var sr:SummaryRow = new SummaryRow();
var sfA:SummaryField = new SummaryField();
var sfB:SummaryField = new SummaryField();
myGColl.source = dgRelatorioVel.dataProvider;
sr.summaryObjectFunction = objFunc;
sfA.dataField = "VM_BC";
sfA.label = "mediaBC";
sfA.summaryFunction = summFunc;
sfB.dataField = "VM_CB";
sfB.label = "mediaCB";
sfB.summaryFunction = summFunc;
sr.fields = [sfA,sfB];
sr.summaryPlacement = "group";
var gfDataGravacao:GroupingField = new GroupingField();
gfDataGravacao.name = "data_gravacao";
gfDataGravacao.summaries=[sr];
if(!btTodosTrechos.selected) {
var gfReferencia:GroupingField = new GroupingField();
gfReferencia.name = "referencia";
gfReferencia.summaries=[sr];
group.fields = [gfDataGravacao,gfReferencia];
} else {
group.fields = [gfDataGravacao];
}
myGColl.grouping = group;
myGColl.refresh();
dgRelatorioVel.dataProvider = myGColl;
dgRelatorioVel.validateNow();
}
private function summFunc(cursor:IViewCursor, dataField:String,
operation:String):Number {
var _auxConta:Number = 0;
var oddConta:String;
var count:int = 0;
var cor:uint;
while(!cursor.afterLast) {
_auxConta += cursor.current[dataField];
cursor.moveNext();
count++;
}
oddConta = (_auxConta/count).toFixed(2);
return parseFloat(oddConta);
}
----------------------
Alguém tem alguma idéia de como posso resolver isso?
Desculpem pela extensão do post, mas foi a forma que encontrei para
explicar meu problema! ehehe.
Abraços e muito obrigado.
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---