Comunidad de diseño web y desarrollo en internet online

Ayuda para mejorar este codigo porfa

Citar            
MensajeEscrito el 30 Ene 2009 08:10 pm
Hola pues intente pasar datos de un datagrid a otro con mdm zinc de la forma comun.....pero hay algun experto q me diga si en vez de pasar toda la linea del datagrid me pase cantidades, es q intento hacer un inventario por asi decirlo pero quiero si tengo en una datagrid por ejemplo en una columna el nombre lapiz y en la otra la cantidad por ejemplo 4, pero quiero q uno al darle pasar el diga cuantos quiere pasar y si paso 2 al otro datagrid en el uno me queden los otros des el codigo pa pasar q tengo es:

Código :

import mx.controls.*;

var fromAtoB_btn:Button;
var fromBtoA_btn:Button;
var listA_ls:DataGrid;
var listB_ls:DataGrid;

_parent.listA_ls.dataProvider = _parent.DataSet.Usuarios_Agenda;

fromAtoB_btn.clickHandler = function(evt:Object) {
   var listA:DataGrid = evt.target._parent.listA_ls;
   var listB:DataGrid = evt.target._parent.listB_ls;
   
   if (listA.selectedItem != undefined) {
      
      listB.addItem(listA.selectedItem);
      // remove the item from the original List, listA_ls.
      listA.removeItemAt(listA.selectedIndex);
   }
};

fromBtoA_btn.clickHandler = function(evt:Object) {
   var listA:DataGrid = evt.target._parent.listA_ls;
   var listB:DataGrid = evt.target._parent.listB_ls;
   if (listB.selectedItem != undefined) {
      listA.addItem(listB.selectedItem);
      listB.removeItemAt(listB.selectedIndex);
   }
};

sortA_btn.label = "Sort";

sortA_btn.clickHandler = function(evt:Object) {
   evt.target._parent.listA_ls.sortItems(sortByMonth);
};

sortB_btn.label = "Sort";
sortB_btn.clickHandler = function(evt:Object) {
   evt.target._parent.listB_ls.sortItems(sortByMonth);
};

function sortByMonth(a:Object, b:Object):Boolean {
   return parseInt(a.data)>parseInt(b.data);
}

Por Sigmax

Claber

136 de clabLevel

1 tutorial

 

msie7
Citar            
MensajeEscrito el 30 Ene 2009 11:19 pm
Hola:

Hice un codigo, que lo hace con los metodos del DataGrid, pero tiene la desventaja que las filas no se renderean hasta que pones el mouse sobre ellas, te recomiendo que hagas algo parecido, pero con tus dataprovider:

Código ActionScript :

fromAtoB_btn.onRelease = function() {
   var listA:DataGrid = this._parent.listA_ls;
   var listB:DataGrid = this._parent.listB_ls;
   
   if (listA.selectedItem != undefined) {
      //El objeto seleccionado de la lista A
      var Aobj:Object = listA.selectedItem;
      var Bobj:Object = new Object();
      for( var i in Aobj ) Bobj[i] = Aobj[i];
      var cantidad:Number = Number(Aobj["cantidad"]);
      //El index del objeto en la lista B
      var index:Number = getIndexByItem( listB, "nombre", Aobj["nombre"] );
      //Si el index no esta en B, se debe agregar
      if( index == undefined )
      {
         Bobj["cantidad"] = 1;
         listB.addItem(Bobj);
      }
      //Si ya esta, solo se suma
      else
      {
         Bobj = listB.getItemAt(index);
         Bobj["cantidad"] = Number(Bobj["cantidad"]) + 1;
      }
      //Si la cantidad en A restada, es 0
      if(cantidad - 1 <= 0)
      {
         //Lo Borramos
         listA.removeItemAt(listA.selectedIndex);
      }
      else
      {
         //Lo restamos
         Aobj["cantidad"] = Number(Aobj["cantidad"]) - 1;
      }
   }
};

//Esta funcion devuelve el index de la ubicacion de el valor(val) de una columna(col) en una dataGrid(aux)
//si index es undefined, significa que no se encontro nada
function getIndexByItem( aux:DataGrid, col:String, val ):Number
{
   var l:Number = aux.length;
   var index:Number;
   for(var i:Number = 0; i < l; i++)
   {
      if(   aux.getItemAt(i)[col] == val )
      {
         index = i;
         break;
      }
   }
   return index;
}


Lo unico que hago es obtener la informacion de A, luego cheko si en B existe ese articulo, si no existe, creo uno con cantidad 1, y si ya existia, simplemente sumo su la cantidad con 1, luego cheko si en A, la cantidad restada ya es cero, osea ya no hay articulos y borra ese tiem de la lista A, caso contrario, simplemente le resta 1. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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