/// <summary> /// doSearch: run a search /// </summary> protected void doSearch() { string firstName = txtFirstName.Text; string lastName = txtLastName.Text; int surnameType = cboSurnameType.SelectedIndex; int forenameType = cboForenameType.SelectedIndex; dgvClients.DataBindings.Clear(); _list = new ClientSummaryList(); if (Server.Instance.searchClient(firstName, forenameType, lastName, surnameType, _list)) { dgvClients.AutoGenerateColumns = false; dgvClients.DataSource = _list; dgvClients.Refresh(); } if (_selecting) { cmdOk.Visible = (_list.Count > 0); } }
/// <summary> /// searchClient: this performs a client search returning XML data. /// </summary> /// <remarks> /// This differs from the book search in using XML as a vehicle for the results. /// These are parsed into a client summary list using LINQ to XML. /// </remarks> /// <param name="clientId"></param> /// <param name="forename"></param> /// <param name="surname"></param> /// <param name="list"></param> /// <returns></returns> public Boolean searchClient(string forename, int forenameSearchType, string surname, int surnameSearchType, ClientSummaryList list) { String results = String.Empty; try { lock (_syncCall) { UniSubroutine s = _sess.CreateUniSubroutine("u2_searchClients", 3); String searchData = surname + FM_STR + surnameSearchType.ToString() + FM_STR + forename + FM_STR + forenameSearchType.ToString(); String errText = String.Empty; s.SetArg(0, searchData); s.Call(); errText = s.GetArg(2); results = s.GetArg(1).Replace(FM_STR, CRLF); if (String.IsNullOrEmpty(errText) == false) { ShowError(errText); return(false); } } System.Diagnostics.Debug.Print("Start of text"); System.Diagnostics.Debug.Print(results); System.Diagnostics.Debug.Print("end of text"); XDocument doc = XDocument.Parse(results); var query = from e in doc.Element("ROOT").Descendants("U2_CLIENTS") select new ClientSummary { ClientId = (string)e.Element("ID"), FirstName = (string)e.Element("FORENAME"), LastName = (string)e.Element("SURNAME"), Address = (string)e.Element("DELIM_ADDRESS"), JoinDate = (string)e.Element("JOIN_DATE"), AccountStatus = (string)e.Element("ACCOUNT_STATUS") }; foreach (ClientSummary c in query) { list.Add(c); } } catch (Exception ex) { ShowError(ex.Message); return(false); } return(true); }