Hi Henrik, So you're getting back a collection of products from the service and binding them to the DataGrid. Let's assume that the product objects are Product Value Objects. You have every thing that you need for an order except for the quantity of the product(s) to order. Keep it simple, add a Transient field to the Product VO and use that for the quantity column in the same DataGrid.
[Transient] /** * The product quantity to order */ public var productQuantity:int = 0; The itemEditor in the DataGrid can then just update the quantity property directly in the Product VO. The next step is to take the Product(s) that have a quantity and submit them to become an order. Usually the user can select multiple products for an order, so I'll go that route. After the user has entered all of the product quantities to order, the Products in the ArrayCollection are ready to be processed into an order. The user clicks a submit button; or you do this when the individual quantities change. For each (or one) Product in the ArrayCollection that has a quantity > 0, create an OrderDetail VO from the necessary Product properties; including productQuantity. You might prefer OrderContent VO since that's the table that you're updating on the server. Add the OrderDetail VOs to an ArrayCollection and send the collection to the service; to process and create an order. Or, you can send a single VO; if that fits your needs better. The php service can create the order and then add the details to the order from the submitted collection of or single OrderDetail DTO. That's a simple round trip. Good luck. -TH --- In flexcoders@yahoogroups.com, "henrik.hedberg" <hen...@...> wrote: > > Thanks for the reply, this is what I did to get it to work so far: > > I created a value object class to hold exactly the data I wanted for each row in the datagrid. When the php service returned the data I looped throught it and transfered what I needed to instances of my VO and then added those to a new array collection. That array collection I then bound as a dataprovider for my datagrid. > > I put in an inline item renderer for the amount with a numeric stepper. > > The next step will then be to take the correct data from that array collection (item id and item amount) and transfer it to a php service that will save it in the order-table of the database. > > Since the grid and the ac are bound, I do not need to fire an event on focus out, I already have the data in the ac. I wonder how that solution might have worked when the user changes her mind and alters the amount many times on the products(?) > > > --- In flexcoders@yahoogroups.com, "valdhor" valdhorlists@ wrote: > > > > First off, adding this one column datagrid and getting it to line up correctly must be a pain. I wouldn't do that. Just add another column to the datagrid for the quantity. You can add as many columns to the datagrid as you want - they do not have to match the dataprovider. > > > > I would design my item editor with a textfield with a focus out event listener. When the event fires, grab the ID, amount and price and populate a value object. Add this object to a custom event and dispatch it. > > > > At the same level of the datagrid (Or wherever), have an event listener for the custom event. When you get it, add the value object to an orders array collection. If the user commits to buy, send this array collection to the server to populate the orders database. You can return the order number and save it in a shared object if you want. > > > > > > --- In flexcoders@yahoogroups.com, "henrik.hedberg" <henrik@> wrote: > > > > > > > > > Hi guys, quite an explanation here, hope someone has the patience to > > > read it through > > > > > > I'm building an application in Flex 4 that handles an ordering system. > > > I have a small mySql database and I've written a few services in php to > > > handle the database. > > > > > > Basically the logic goes like this: > > > > > > I have tables for customers, products, productGroups, orders, and > > > orderContent > > > > > > I have no problem with the CRUD management of the products, orders and > > > customers, it is the order submission that the customer will fill in > > > that is giving me headaches: > > > > > > What I want is to display the products in dataGrids, ordered by group, > > > which will be populated with Flex datamanagement via the php-services, > > > and that per se is no problem. But I also want an extra column in the > > > datagrid that the user can fill in with the amount he wishes to order > > > of that product. This column would in theory then bind to the db table > > > "orderContent" via the php services. > > > > > > The problem is that you would need to create a new order in the > > > database first that the data could bind to (orderContent is linked to an > > > order in the db). > > > > > > I do not want to create a new order every time a user enters the page > > > to look at the products, rather I would like to create the order when a > > > button is pressed and then take everything from the datagrids on the > > > page and submit it into the database. > > > > > > My idea has been to create a separate one-column datagrid, line it up > > > next to the datagrid that contains the products and in that datagrid > > > the user would be able to enter the amount of that product he'd like to > > > order. > > > > > > I've created a valueObject that contains the data I would need for an > > > order: > > > > > > Code: > > > package valueObjects > > > { > > > public class OrderAmount > > > { > > > > > > public var productId:int; > > > public var productAmount:int; > > > public var productPrice:Number; > > > > > > public function orderAmount() > > > { > > > } > > > } > > > } > > > > > > My idea was to use a service to get all products from a certain group, > > > populate an ArrayCollection with the data, then transfer each object in > > > that ArrayCollection to an instance of the Value Object above, add the > > > value object to another ArrayCollection that would the be used as a > > > dataProvider for the one-column datagrid (I would only display amount > > > which would be set to zero at first, but use the other data upon > > > transfering it to the db) > > > > > > I've tried to use the results from the automatically generated > > > serviceResults that retrieve the products for the datagrid and put in a > > > resultHandler that transfers the valueobjects, however this does not > > > seem to work. > > > > > > Basically my question is this: Am I approaching this thing completely > > > wrong, is there a better solution? > > > > > > Would I need to create a completely new service request to get the > > > product id:s, and price to populate the one-column datagrid. > > > > > > I'll post some code if that would help. > > > > > > Thank you if you read this far. > > > > > >