The little code you have posted looks like a member variable, probably of your ASP .Net webpage. If that's so, it's not a good idea to work that way.
Why? That's easy. The page does not exist on the server between postbacks. At every request (including postbacks) a new instance of the page is created, performs a sequence of events and is destroyed when the response has been sent.
After a postback it's a new page where your array has never been filled. There are several things you should look at to better understand what's going on:
ASP.Net page lifecycle[
^]
Data binding[
^]
Alternatively, you can do manual paging and not use data binding. In this case you must store your array in the ViewState and restore it from there at every call to PageLoad(). Also, you must fill the control yourself after every postback. This should also be done at PageLoad(), right after restoring the array from the ViewState.
ViewState[
^]