Comunidad de diseño web y desarrollo en internet online

Sumar

Citar            
MensajeEscrito el 25 Jul 2005 03:45 pm
Hola a todos:

Trato de sumar una columna de un datagrid, que es llenado cuando selecciono registros de otro datgrid... espero me hayan entendido... este es el codigo

Código :

alSeleccionar.change = function(objeto){
   if (objeto.target == pelis_grid){
        solGrid.addItem({Equipo: objeto.target.getItemAt(objeto.target.selectedIndex).Equipo,
                   Marca:   objeto.target.getItemAt(objeto.target.selectedIndex).Marca,
                   Modelo: objeto.target.getItemAt(objeto.target.selectedIndex).Modelo,
                   Serie: objeto.target.getItemAt(objeto.target.selectedIndex).Serie,
                   Vigencia: objeto.target.getItemAt(objeto.target.selectedIndex).Vigencia,
                   Calibrado: objeto.target.getItemAt(objeto.target.selectedIndex).Calibrado,
                   Proxima: objeto.target.getItemAt(objeto.target.selectedIndex).Proxima,
                   Precio: objeto.target.getItemAt(objeto.target.selectedIndex).Precio});
      datossol.items = solGrid;
      sol_grid.dataProvider = datossol.dataProvider;
      sol_grid.hScrollPolicy = "auto";
      sol_grid.setStyle("fontSize", 9);
      sol_grid.getColumnAt(0).width = 120;
      sol_grid.getColumnAt(1).width = 80;
      sol_grid.getColumnAt(2).width = 80;
      sol_grid.getColumnAt(3).width = 80;
      sol_grid.getColumnAt(4).width = 50;
      sol_grid.getColumnAt(5).width = 60;
      sol_grid.getColumnAt(6).width = 60;
      sol_grid.getColumnAt(7).width = 60;
      sol_grid.getColumnAt(0).setStyle("textAlign", "left");
      sol_grid.getColumnAt(1).setStyle("textAlign", "left");      
      sol_grid.getColumnAt(2).setStyle("textAlign", "left");
      sol_grid.getColumnAt(3).setStyle("textAlign", "left");
      sol_grid.getColumnAt(4).setStyle("textAlign", "left");
      sol_grid.getColumnAt(5).setStyle("textAlign", "left");
      sol_grid.getColumnAt(6).setStyle("textAlign", "left");
      sol_grid.getColumnAt(7).setStyle("textAlign", "left");
      var suma=0; 
      for(var i=0;i<=sol_grid.length;i++) 
         { 
            suma+= Number(sol_grid.getItemAt(i)["Precio"]); 
         } 
         total_txt.text = suma;
         trace(suma)
   }
}
pelis_grid.addEventListener("change", alSeleccionar);


Pero a la hora de visualizar "total_txt.text" me pone NaN.

Espero apoyo y garacias anticipadas

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Jul 2005 07:45 pm
Deberas que lo he intentado, lo mas que consigo es que me vaya concatenando los valores cada ves que selecciono un registro del datagrid, pero no me suma.

ahora pongo esto

Código :

suma = suma + objeto.target.getItemAt(objeto.target.selectedIndex).Precio;


Pero no me suma, como que concatena los valores de precio

Una ayuda no se le niega a nadie, no creen

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Jul 2005 07:49 pm
Prueba esto:

Código :

suma = Number(suma) + Number(objeto.target.getItemAt(objeto.target.selectedIndex).Precio);


aunque un truco, tambien lo puedes hacer asi:

Código :

suma +=  Number(objeto.target.getItemAt(objeto.target.selectedIndex).Precio);


:D

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 25 Jul 2005 07:54 pm
:( Ya lo intente Maikel, pero me sigue poniendo NaN

que pasa esta cosa esta poseida :shock:

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Jul 2005 08:32 pm
Alguien tiene otra idea, deveras que no me queda..... :crap:

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Jul 2005 10:00 pm
intenta metiéndole una condicional, asegurándote que el valor que vas a sumar es, de hecho, numérico

if(!isNaN(numero)){
suma += numero;
}

un saludo

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox
Citar            
MensajeEscrito el 25 Jul 2005 10:03 pm

Código :

for(var i=0;i<=sol_grid.length;i++) 


quita el <= y dejale solo <, estas accediendo a una posicion que no existe :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 26 Jul 2005 08:21 am
Creo que es problema del for, mira a ver si poniendolo así te funciona.

Código :

for(var i=0; i<=solGrid.length-1; i++){


La cuestión es que el último número es "undefined" porque no existe, y claro, número + undefined = NaN.

Si sigue sin funcionar prueba cambiando esta línea también.

Código :

suma += parseInt(solGrid.getItemAt(i)["Precio"]);


Deu!!

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 26 Jul 2005 02:19 pm
:D Ok, muchas gracias elecash, maikel y fael por el apoyo...

ya estoy sumando...porfin, ahora tengo el detalle que mi variable "suma", asi como esta mi codigo actualmente me va duplicando mi suma total.

pense que al poner una variable tipo array llamada sumador como apoyo me serviria de tal manera que cada vez que sumara, limpiaria mi array con un splice... este es el codigo

Código :

sumador = solGrid;
      for(var i=0;i<=solGrid.length-1;i++) 
         { 
            suma+= parseFloat(sumador.getItemAt(i)["Precio"]); 
         } 
         total_txt.text = suma;
         sumador.splice(0, sumador.length);
         i_txt.text = i;

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Jul 2005 02:34 pm

Código :

sumador = solGrid.dataProvider;
suma=0;
      for(var i=0;i<=solGrid.length-1;i++)
         {
            suma+= parseFloat(sumador.getItemAt(i)["Precio"]);
         }
         total_txt.text = suma;
         sumador.slice(0);
         i_txt.text = i; 


De el dataGrid, tienes que utilizar el dataProvider, no el DataGrid, como tal (Así trabajas solo con lo que te interesa, el arreglo de datos).
Iguala a suma, a cero, antes de volver a hacer la sumatoria.
El método para eliminar a un array, es slice, omite el final, y te borra, de la posición proporcionada hasta el final.

:wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 26 Jul 2005 03:06 pm
javierdaniel:

Si pongo

Código :

sumador = solGrid.dataProvider; 


me vuelve a poner "NaN", asi que lo deje asi

Código :

sumador = solGrid; 


Pero ahora me pasa lo siguiente... ya sumo, no hay problema.

Pero mi segundo datagrid "sol_grid", el chiste era de que ahi se me fuera llenando con lo que yo o el usuario seleccione del datagrid numero 1, pero ahora solo me pone un registro, selecciono otro registro del dg1 y solo ese me aparece en el datagrid 2.... y asi sucesivamente como que el

Código :

 sumador.splice(0)

le mete ruido a mi datagrid 2.

La verdad entre mas pruebas hago mas dudas o detalles salen... espero haberme explicado, en serio, trato de hacer las cosas por mi mismo, pero creo que me falta mucho para no molestar tanto.

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Jul 2005 03:14 pm
:? :oops: tambien debo de aprender a leer ^^

Javierdaniel: gracias por darme la solucion, confundi splice con slice.....


Gracias a todos ya quedo .... olviden el post anterior de un servidor ya quedo ya suma.... casi casi ya tengo mi carrito virtual... pero gracias a cristalab... :wink:

Por manuel_cfe

106 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.