To understand your problem, please read-up on .Net Page Lifecycle ... it will teach you what happens to the code on each page load, postback, etc...
The place where you have declared the list, will basically be wiped clean every time the page loads (when you click the button on the browser for example, it initiates a postback, and your entire class is "re-created" from scratch). There is no real "Page Specific Global Variables" in ASP.Net.
So for you, you will want to look at using the Session object, or ViewState object to store your list, for that user, for that page, in a global way.
Hope this helps.