My suggestion is that you populate your Grid with a global list that can be accessed any time for any reason you want.
This way you will have the power of a list available everytime you go to the server, at a low cost of memory.
basically, just populate your gridview datasource like this:
List< MyCustomObject> list = new List< MyCustomObject>();
public void PopulateGrid()
{
list.Clear();
list.Add(new MyCustomObject() { ... });
...
grid.DataSource = list;
grid.DataBind();
}
.
.
.
public class MyCustomObject
{
public int ID { get;set; }
[...]
}