// ////////////////////////////////////////////////////////////////////////
        // METHODS
        //
        public MaterialsNavigatorTDS.MaterialNavigatorDataTable GetNavigator()
        {
            materialsNavigator = (MaterialsNavigatorTDS.MaterialNavigatorDataTable)Session["materialsNavigatorNewDummy"];
            if (materialsNavigator == null)
            {
                materialsNavigator = ((MaterialsNavigatorTDS.MaterialNavigatorDataTable)Session["materialsNavigator"]);
            }

            return materialsNavigator;
        }
        protected void AddNewEmptyFix(GridView grdNavigator)
        {
            if (grdNavigator.Rows.Count == 0)
            {
                MaterialsNavigatorTDS.MaterialNavigatorDataTable dt = new MaterialsNavigatorTDS.MaterialNavigatorDataTable();
                dt.AddMaterialNavigatorRow(-1,"", "", "", "", "", "",  false, -1, false, 0,0);
                Session["materialsNavigatorNewDummy"] = dt;

                grdNavigator.DataBind();
            }

            // normally executes at all postbacks
            if (grdNavigator.Rows.Count == 1)
            {
                MaterialsNavigatorTDS.MaterialNavigatorDataTable dt = (MaterialsNavigatorTDS.MaterialNavigatorDataTable)Session["materialsNavigatorNewDummy"];
                if (dt != null)
                {
                    grdNavigator.Rows[0].Visible = false;
                    grdNavigator.Rows[0].Controls.Clear();
                }
            }
        }
        // ////////////////////////////////////////////////////////////////////////
        // EVENTS
        //
        protected void Page_Load(object sender, EventArgs e)
        {
            // Register client scripts
            this.RegisterClientScripts();

            if (!IsPostBack)
            {
                // Security check
                if (!(Convert.ToBoolean(Session["sgLFS_RESOURCES_MATERIALS_VIEW"])))
                {
                    Response.Redirect("./../../error_page.aspx?error=" + "You are not authorized to view this page. Contact your system administrator.");
                }

                // Validate query string
                if ((string)Request.QueryString["source_page"] == null)
                {
                    Response.Redirect("./../../error_page.aspx?error=" + "Invalid query string in materials_navigator2.aspx");
                }

                // Tag Page
                hdfCompanyId.Value = Session["companyID"].ToString();
                hdfResourceType.Value = "Materials";
                Session.Remove("materialsNavigatorNewDummy");

                // Prepare initial data
                 // ... For
                odsViewForDisplayList.DataBind();
                ddlCondition1.DataSourceID = "odsViewForDisplayList";
                ddlCondition1.DataValueField = "ConditionID";
                ddlCondition1.DataTextField = "Name";
                ddlCondition1.DataBind();

                // If coming from
                // ... materials_navigator.aspx or materials_navigator2.aspx
                if ((Request.QueryString["source_page"] == "materials_navigator.aspx") || (Request.QueryString["source_page"] == "materials_navigator2.aspx"))
                {
                    RestoreNavigatorState();
                    materialsNavigatorTDS = (MaterialsNavigatorTDS)Session["materialsNavigatorTDS"];
                }

                // ... materials_edit.aspx, materials_summary.aspx or materials_delete.aspx
                if ((Request.QueryString["source_page"] == "materials_edit.aspx") || (Request.QueryString["source_page"] == "materials_summary.aspx") || (Request.QueryString["source_page"] == "materials_delete.aspx"))
                {
                    RestoreNavigatorState();

                    if (Request.QueryString["update"] == "no")
                    {
                        materialsNavigatorTDS = (MaterialsNavigatorTDS)Session["materialsNavigatorTDS"];
                    }
                    else
                    {
                        // ... Delete store data
                        Session.Contents.Remove("materialsNavigatorTDS");

                        // ... Search data with updates
                        materialsNavigatorTDS = SubmitSearch();

                        // ... store datasets
                        Session["materialsNavigatorTDS"] = materialsNavigatorTDS;
                    }
                }

                // ... materials_delete.aspx, materials_summary.aspx or materials_edit.aspx
                if ((Request.QueryString["source_page"] == "materials_delete.aspx") || (Request.QueryString["source_page"] == "materials_summary.aspx") || (Request.QueryString["source_page"] == "materials_edit.aspx"))
                {
                    if (materialsNavigatorTDS.MaterialNavigator.Rows.Count == 0)
                    {
                        string url = "./materials_navigator.aspx?source_page=materials_navigator2.aspx&re_type=" + hdfResourceType.Value + GetNavigatorState() + "&no_results=yes";
                        Response.Redirect(url);
                    }
                }

                Session["materialsNavigatorTDS"] = materialsNavigatorTDS;
                Session["materialsNavigator"] = materialsNavigatorTDS.MaterialNavigator;

                // ... for the total rows
                if (materialsNavigatorTDS.MaterialNavigator.Rows.Count > 0)
                {
                    lblTotalRows.Text = "Total Rows: " + materialsNavigatorTDS.MaterialNavigator.Rows.Count;
                    lblTotalRows.Visible = true;
                }
                else
                {
                    lblTotalRows.Visible = false;
                }
            }
            else
            {
                // Restore searched data (if any)
                materialsNavigatorTDS = (MaterialsNavigatorTDS)Session["materialsNavigatorTDS"];
                materialsNavigator = materialsNavigatorTDS.MaterialNavigator;

                // ... for the total rows
                if (materialsNavigatorTDS.MaterialNavigator.Rows.Count > 0)
                {
                    lblTotalRows.Text = "Total Rows: " + materialsNavigatorTDS.MaterialNavigator.Rows.Count;
                    lblTotalRows.Visible = true;
                }
                else
                {
                    lblTotalRows.Visible = false;
                }
            }
        }