Have you tried a more conventional way to populate those lists?
Like iterating through the rows. Just to check to see if you do get 4 records instead of 1.
Have you also tried declaring those lists as new?

I don't see anything wrong with your code. as depicted in your code snippet above try inserting a breakpoint on lines 5,10 and hover over dropItems and dropItems2 it should display a count which should be 4 if the database returned more than 4 rows. Try pasting and running the query in SQL and see how many record are returned to ensure the data is correct.

You should be following the advice of Oxiegen and see the behaviour after the iteration. Otherwise, please post a little bit more of the actual code. Also on every postback your list variable is destroyed (there are no public variables in ASP.Net) I'm talking about webforms (do not have expirience with MVC, but i think that this is not the case with MVC) but that shouldn't be the problem here. One other thing, which object are you actually using to display your list??