I added this functionality to a small UI with a table and it seems to function fine. But I want to make sure I understand exactly what your problem is.
I can select a promo code just fine from the dropdown, and it will then display as that cell's contents. However, when I load in table data that already has a promo code set, it displays as nothing.
I was confused initially because the first sentence implies that there is data in the table and it's working fine, and so the second sentence confused me. So I reversed the order of the two sentences in my mind: when you set the table model data everything seems to display correctly except for the promo code field, which is blank (even though the data seems to be there). Then if you select a promo code from the dropdown it will display correctly.
If this is what is happening, then you probably have a problem in the TableModel implementation. That's where the data actually resides, where it is handed off to be displayed (via the "getValueAt()" method) and where it is updated ("setValueAt()" method). Either the data isn't in the model [though you say it is] or it isn't being passed back correctly in the "getValuAt()" method. But it's wierd that it would then start working after you changed a value.
If I haven't read this right, please correct me and explain further the order in which things are happening and where/when the problem occurs.