I am working on this code and I realised that the List gets initialized everytime from a different event handler. I do not want the List to be initialized to empty, I need the value to be retained. I have placed the declaration of the list in the class instead of in the method. Please go through my code and correct me.
Hi, I have edited my post, did some reading and realised that it is very much connected to retaining values between page postbacks.
- public partial class WebForm4 : System.Web.UI.Page
- {
- #region List of Weeks
- public List A_Week_1 = new List();
- public List A_Week_2 = new List();
- public List A_Week_3 = new List();
- public List A_Week_4 = new List();
- public List A_Week_5 = new List();
- public List A_Week_6 = new List();
- #endregion
-
-
-
-
-
- protected void Page_Load(object sender, EventArgs e)
- {
-
-
-
- }
- protected void btnUpload_Click(object sender, EventArgs e)
- {
-
- if (FileUpload1.HasFile)
- {
- try
- {
- string filename = Path.GetFileName(FileUpload1.FileName);
-
- string fileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);
-
- string fileLocation = Server.MapPath("~/Uploaded Files/" + filename);
- FileUpload1.SaveAs(fileLocation);
- lblMessage.Text = "Upload status: File uploaded to " + fileLocation;
-
- readfile();
- }
- catch (Exception ex)
- {
- lblMessage.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
- }
- }
- }
- protected void readfile()
- {
-
- string connString = ConfigurationManager.ConnectionStrings["testexcel"].ConnectionString;
-
-
- OleDbConnection oledbConn = new OleDbConnection(connString);
-
- try
- {
-
- oledbConn.Open();
- DataTable dtsheet = new DataTable("storesheettable");
-
- dtsheet = oledbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
-
-
- if (dtsheet == null)
- {
- Label1.Text = "No sheet to display";
- }
- else
- {
-
-
- List<string> import_excel_weeks_list = new List<string>();
-
-
-
- char[] charsToTrim = { '$' };
- for (int i = 0; i < dtsheet.Rows.Count; i++)
- {
-
- import_excel_weeks_list.Add(dtsheet.Rows[i]["TABLE_NAME"].ToString().Trim(charsToTrim));
-
-
- }
-
- Repeater1.DataSource = import_excel_weeks_list;
- Repeater1.DataBind();
- }
-
-
- }
- catch (Exception ex)
- {
- catchexception.Text = ex.ToString();
-
- }
- finally
- {
-
- oledbConn.Close();
- }
-
- }
- protected void checkcalendarweek(string weekname)
- {
- if (weekname == "Week2")
- {
- int storemonth;
- DateTime today = new DateTime();
- storemonth = today.Month;
- Response.Write(storemonth);
-
-
- }
- }
- public void monthsddl_SelectedIndexChanged(object sender, EventArgs e)
- {
- int total_no_days;
- int selected_month = Convert.ToInt32(monthsddl.SelectedValue);
-
-
- total_no_days = DateTime.DaysInMonth(DateTime.Today.Year, selected_month);
- Label1.Text = String.Format("Total number of days in the month of {0} is {1}", monthsddl.SelectedItem,total_no_days);
-
-
- DateTime firstOfMonth = new DateTime(Convert.ToInt32(DateTime.Now.Year), selected_month, 1);
- int startdayofthemonth = (int)DayOfWeek.Monday;
-
- int weeksInMonth = (int)Math.Ceiling((startdayofthemonth + total_no_days) / 7.0);
-
-
-
- int weeknum = 0;
-
-
- for (int i = 1; i <= total_no_days; i++)
- {
-
- DateTime date1 = new DateTime(DateTime.Today.Year, selected_month, i);
- DateTime dateonly = date1.Date;
-
- DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
-
-
- System.Globalization.Calendar cal = dfi.Calendar;
- int num = cal.GetWeekOfYear(date1, dfi.CalendarWeekRule, (DayOfWeek.Monday));
-
-
- DateTime test = new DateTime(date1.Year, date1.Month, 1);
- int num2 = cal.GetWeekOfYear(test, dfi.CalendarWeekRule, (DayOfWeek.Monday));
- weeknum = num - num2 + 1;
-
-
- if (weeknum == 1)
- {
- A_Week_1.Add(date1);
- }
- else if(weeknum == 2)
- {
-
- A_Week_2.Add(date1);
- }
- else if(weeknum == 3)
- {
-
- A_Week_3.Add(date1);
- }
- else if (weeknum == 4)
- {
-
- A_Week_4.Add(date1);
- }
- else if (weeknum == 5)
- {
-
- A_Week_5.Add(date1);
- }
- else
- {
-
- A_Week_6.Add(date1);
- }
-
-
-
- Response.Write(weeknum);
-
-
- Response.Write(" ");
- Response.Write(dateonly.ToString("dd/M/yyyy"));
- Response.Write(" ");
- Response.Write(dateonly.DayOfWeek);
- Response.Write("
"); -
- }
-
-
-
-
-
- foreach (DateTime text in A_Week_5)
- {
- Response.Write(text);
- Response.Write("
"); - }
-
- Response.Write("Test" + A_Week_5.Last());
-
- createtable(weeknum, A_Week_1, A_Week_2, A_Week_3, A_Week_4, A_Week_5, A_Week_6);
- }
-
- protected void createtable(int pass_in_weeksInMonth, List week_1, List week_2, List week_3, List week_4, List week_5, List week_6)
- {
-
- DataTable createweek_dates = new DataTable();
- DataColumn column_createweek_dates;
- DataRow rows_createweek_dates;
-
-
- column_createweek_dates = new DataColumn();
- column_createweek_dates.DataType = Type.GetType("System.Int32");
- column_createweek_dates.ColumnName = "Week Number";
- column_createweek_dates.ReadOnly = true;
- column_createweek_dates.Unique = true;
-
- createweek_dates.Columns.Add(column_createweek_dates);
-
-
- column_createweek_dates = new DataColumn();
- column_createweek_dates.DataType = Type.GetType("System.DateTime");
- column_createweek_dates.ColumnName = "Start Date";
- column_createweek_dates.ReadOnly = true;
-
-
- createweek_dates.Columns.Add(column_createweek_dates);
-
-
- column_createweek_dates = new DataColumn();
- column_createweek_dates.DataType = Type.GetType("System.DateTime");
- column_createweek_dates.ColumnName = "End Date";
- column_createweek_dates.ReadOnly = true;
-
-
- createweek_dates.Columns.Add(column_createweek_dates);
-
- for (int i = 1; i <= pass_in_weeksInMonth; i++)
- {
-
- rows_createweek_dates = createweek_dates.NewRow();
- rows_createweek_dates["Week Number"] = i;
- for (int j = i; j <= i; j++)
- {
- if (j == 1)
- {
- rows_createweek_dates["Start Date"] = week_1.First();
- rows_createweek_dates["End Date"] = week_1.Last();
- }
- else if (j == 2)
- {
- rows_createweek_dates["Start Date"] = week_2.First();
- rows_createweek_dates["End Date"] = week_2.Last();
- }
- else if (j == 3)
- {
- rows_createweek_dates["Start Date"] = week_3.First();
- rows_createweek_dates["End Date"] = week_3.Last();
- }
- else if (j == 4)
- {
- rows_createweek_dates["Start Date"] = week_4.First();
- rows_createweek_dates["End Date"] = week_4.Last();
- }
- else if (j == 5)
- {
- rows_createweek_dates["Start Date"] = week_5.First();
- rows_createweek_dates["End Date"] = week_5.Last();
- }
- else
- {
- rows_createweek_dates["Start Date"] = week_6.First();
- rows_createweek_dates["End Date"] = week_6.Last();
- }
-
- }
-
- createweek_dates.Rows.Add(rows_createweek_dates);
- }
-
- rptItemsInCart.DataSource = createweek_dates;
- rptItemsInCart.DataBind();
-
- }
- public void DoSend(object sender, EventArgs e)
- {
- AllLists create1 = new AllLists();
- for (int i = 0; i < rptItemsInCart.Items.Count; i++)
- {
-
- CheckBox cb = (CheckBox)rptItemsInCart.Items[i].FindControl("CheckBox1");
- if (cb.Checked)
- {
-
- HiddenField hiddentext = (HiddenField)rptItemsInCart.Items[i].FindControl("HiddenField1");
-
-
- Label2.Text = hiddentext.Value;
- create1.user_select_weeks_list.Add(hiddentext.Value);
- }
- }
-
- selected_weeks_repeater.DataSource = create1.user_select_weeks_list;
- selected_weeks_repeater.DataBind();
-
- foreach(DateTime dates1 in A_Week_1)
- {
- Response.Write(dates1);
- }
-
- }
- public void Week_button_Click(object sender, EventArgs e)
- {
- DataTable excel_data_gd = new DataTable();
- DataColumn edg_column;
- DataRow edg_row;
-
-
- AllLists create1 = new AllLists();
- for(int i = 0; i < selected_weeks_repeater.Items.Count; i++)
- {
- Label pass_as_label = (Label)selected_weeks_repeater.Items[i].FindControl("store_user_sheet");
- create1.user_select_weeks_list.Add(pass_as_label.Text);
- }
-
-
-
-
-
-
-
-
- edg_column = new DataColumn();
- edg_column.DataType = System.Type.GetType("System.String");
- edg_column.ColumnName = "Machine Name";
- edg_column.ReadOnly = true;
- edg_column.Unique = true;
-
- excel_data_gd.Columns.Add(edg_column);
-
- string[] machinename_array1 = Import_xml_file();
- for (int i = 0; i < machinename_array1.Length; i++)
- {
- edg_row = excel_data_gd.NewRow();
- edg_row["Machine Name"] = machinename_array1[i];
-
- excel_data_gd.Rows.Add(edg_row);
- }
-
-
- if(create1.user_select_weeks_list.Contains("Week2"))
- {
-
-
- int count_of_dates = A_Week_2.Count;
-
- for(int i = 0; i < count_of_dates; i++)
- {
- edg_column = new DataColumn();
- edg_column.DataType = System.Type.GetType("System.DateTime");
- edg_column.ColumnName = A_Week_2[i].ToString();
- edg_column.ReadOnly = true;
- edg_column.Unique = true;
-
- excel_data_gd.Columns.Add(edg_column);
- }
- }
-
-
-
-
-
-
-
- GridView1.DataSource = excel_data_gd;
- GridView1.DataBind();
-
- }
- protected string[] Import_xml_file()
- {
- XmlDocument doc = new XmlDocument();
- doc.Load(Server.MapPath("~/App_Data/List_of_machines.xml"));
-
- XmlNodeList elemList = doc.GetElementsByTagName("machine_name");
-
- string[] machinename_array = new string[elemList.Count];
- for (int i = 0; i < elemList.Count; i++)
- {
- machinename_array[i] = elemList[i].InnerXml;
- }
-
- return machinename_array;
-
-
- }
- }
-
What is the best way of retaining the values, ViewState or Session, I read that viewstate if used with large data can cause the page to load slower, how can I go about solving this.