You can't use charges without calculations in this case, I don't think. Did you try using the calculations I suggested? Is there a reason that technique won't work for you.
I don't think charges is the correct solution since each row may be different. Charges are used for totaling and manipulating the cart as a whole. Individual row variations must be handled with calculations.