示例#1
0
        //Search button clicked.
        private void btn_S_Search_Click(object sender, EventArgs e)
        {
            if (GuiPrefs.OpenDBPath == "")
            {
                return;
            }

            //If the controls have valid fields, process the search
            if (SD_Controls_Valid())
            {
                SpecsRecord nr = new SpecsRecord();
                int         deye;

                //Displays/hides the auxiliary data grid view and resizes them both
                if (chb_S_SplitMultifocals.Checked)
                {
                    dgv_S_Distance.Visible      = true;
                    dgv_S_Closeup.Visible       = true;
                    dgv_S_SearchResults.Visible = false;
                    lb_S_Distance.Visible       = true;
                    lb_S_Closeup.Visible        = true;
                }
                else
                {
                    dgv_S_Distance.Visible      = false;
                    dgv_S_Closeup.Visible       = false;
                    dgv_S_SearchResults.Visible = true;
                    lb_S_Distance.Visible       = false;
                    lb_S_Closeup.Visible        = false;
                }
                MainForm_ResizeEnd(sender, e);

                //Step 1 - Create the search record
                nr.SphereOD = Convert.ToSingle(tb_S_SphereOD.Text);
                nr.CylOD    = Convert.ToSingle(tb_S_CylOD.Text);
                nr.AxisOD   = Convert.ToInt16(tb_S_AxisOD.Text);
                nr.AddOD    = Convert.ToSingle(tb_S_AddOD.Text);
                nr.SphereOS = Convert.ToSingle(tb_S_SphereOS.Text);
                nr.CylOS    = Convert.ToSingle(tb_S_CylOS.Text);
                nr.AxisOS   = Convert.ToInt16(tb_S_AxisOS.Text);
                nr.AddOS    = Convert.ToSingle(tb_S_AddOS.Text);

                //Multi/single type check
                if (rb_S_Single.Checked)
                {
                    nr.Type = SpecType.Single;
                }
                else
                {
                    nr.Type = SpecType.Multi;
                }

                //Gender check
                if (rb_S_AnyGender.Checked)
                {
                    nr.Gender = null;
                }
                else if (rb_S_Male.Checked)
                {
                    nr.Gender = SpecGender.Male;
                }
                else if (rb_S_Female.Checked)
                {
                    nr.Gender = SpecGender.Female;
                }
                else
                {
                    nr.Gender = SpecGender.Uni;
                }

                //Size check
                if (rb_S_AnySize.Checked)
                {
                    nr.Size = null;
                }
                else if (rb_S_Small.Checked)
                {
                    nr.Size = SpecSize.Small;
                }
                else if (rb_S_Medium.Checked)
                {
                    nr.Size = SpecSize.Medium;
                }
                else if (rb_S_Large.Checked)
                {
                    nr.Size = SpecSize.Large;
                }
                else
                {
                    nr.Size = SpecSize.Child;
                }

                //Dominant eye check
                if (rb_S_OD.Checked)
                {
                    deye = (int)DomEye.OD;
                }
                else if (rb_S_OS.Checked)
                {
                    deye = (int)DomEye.OS;
                }
                else
                {
                    deye = (int)DomEye.OU;
                }

                //Step 2 - Call the Rx Search function to search and score matching specs
                //		 - Sort by score
                Mydb.RxSearch(nr, (DomEye)deye, chb_S_SplitMultifocals.Checked);
                if (dgv_S_SearchResults.Visible)
                {
                    dgv_S_SearchResults.Sort(dgv_S_SearchResults.Columns[1], ListSortDirection.Ascending);
                }
                else
                {
                    dgv_S_Distance.Sort(dgv_S_Distance.Columns[1], ListSortDirection.Ascending);
                    dgv_S_Closeup.Sort(dgv_S_Closeup.Columns[1], ListSortDirection.Ascending);
                }
                //dgv_S_AuxResults.Sort(dgv_S_AuxResults.Columns[1], ListSortDirection.Ascending);

                //Step 3 - If empty, display a message box indicating no results, otherwise scroll to the top of the results
                if (Mydb.DBResults.Rows.Count > 0)
                {
                    dgv_S_SearchResults.FirstDisplayedScrollingRowIndex = 0;
                    dgv_S_Distance.FirstDisplayedScrollingRowIndex      = 0;
                }
                else
                {
                    MessageBox.Show("No matches found within acceptable tolerance of specified prescription.",
                                    "No matches.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }

                //Do the same for the Closeup table
                if (Mydb.DBResultsAux.Rows.Count > 0)
                {
                    dgv_S_Closeup.FirstDisplayedScrollingRowIndex = 0;
                }

                //Step 4 -Clear selections for both data grid views
                //				dgv_S_AuxResults.FirstDisplayedScrollingRowIndex = 0;
                dgv_S_SearchResults.ClearSelection();
                dgv_S_Distance.ClearSelection();
                dgv_S_Closeup.ClearSelection();
                //		        dgv_S_AuxResults.ClearSelection();
            }
        }