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,