I have a question regarding the scope of a class that I created in relation to a web application. My class is CCourseInfo and I create it as a private member of one of my web pages Enrollment. In the Page_Load method, there is a database call to load the table data in the class member, DataTable. This DataTable is bound to a gridview. This is the code:
 public partial class Enrollment : System.Web.UI.Page
{
   private Course CCourseInfo = new Course("Courses");
  protected void Page_Load(object sender, EventArgs e)
    {          
        try
        {
            if (!IsPostBack)
            {
                //Get the Environment Setting to determine the database to access
                txtBoxEnvironment.Text = CurrentEnvironment;
                DAL.setCurrentEnvironment(CurrentEnvironment);
                //Get Course information from database
                CCourseInfo.getData();
                 CourseGridView.DataSource = CCourseInfo.TableInfo;
                CourseGridView.DataBind();
            }
       }
}
I want to implement Paging. This method works but I have to get the data again to populate the DataTable in the CCourseInfo class.
  protected void CourseGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        CourseGridView.PageIndex = e.NewPageIndex;
        CCourseInfo.getData();
        CourseGridView.DataSource = CCourseInfo.TableInfo;
        CourseGridView.DataBind();
    }
My question is: Why do I have to get the data again? I set the DataTable in the Page_Load method and declared the class under the Enrollment class. Shouldn't the data still exists in the DataTable? How can I change my design so that I only have to get the data once?
Thanks,
 
     
     
    