//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(); } }