protected void doSearch() { String orderId = string.Empty; if ((rbAllClients.Checked) && String.IsNullOrEmpty(txtSearchAfter.Text) && String.IsNullOrEmpty(txtSearchBefore.Text)) { MessageBox.Show("Please select a client or enter a date range"); return; } string clientId = rbAllClients.Checked ? string.Empty : cboClients.SelectedValue.ToString(); string surname = string.Empty; string forename = string.Empty; string dateBefore = txtSearchBefore.Text; string dateAfter = txtSearchAfter.Text; SalesOrderDataList newList = new SalesOrderDataList(); if (Server.Instance.searchOrders(orderId, clientId, surname, forename, dateAfter, dateBefore, newList) == false) { return; } if (newList.Count == 0) { MessageBox.Show("No results found"); return; } _list = newList; dgvOrders.AutoGenerateColumns = false; dgvOrders.DataBindings.Clear(); dgvOrders.DataSource = _list; dgvLines.DataSource = _list; dgvLines.DataMember = "Lines"; dgvOrders.Refresh(); }
/// <summary> /// searchOrders this performs an orders search returning nested XML data. /// </summary> /// <remarks> /// This differs from the book search in using XML as a vehicle for the results. /// These are parsed into a order 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 searchOrders(String orderId, String clientId, string surname, string forename, string startDate, string endDate, SalesOrderDataList list) { String results = String.Empty; try { lock (_syncCall) { UniSubroutine s = _sess.CreateUniSubroutine("u2_searchOrders", 3); String searchData = orderId + FM_STR + clientId + FM_STR + surname + FM_STR + forename + FM_STR + startDate + FM_STR + endDate + FM_STR + _moneyFormat.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(results); XDocument doc = XDocument.Parse(results); var query = from e in doc.Element("ROOT").Descendants("ORDER") select new SalesOrderData { OrderId = Utils.safeString((string)e.Element("ID")), OrderDate = Utils.safeString((string)e.Element("ORDER_DATE")), ClientId = Utils.safeString((string)e.Element("CLIENT_ID")), Fullname = Utils.safeString((string)e.Element("FULLNAME")), ShipCode = Utils.safeString((string)e.Element("SHIP_CODE")), ShipCost = Utils.safeDouble((String)e.Element("SHIP_COST")), Lines = (e.Element("LINES").HasElements == false ? null: (from e2 in e.Element("LINES").Elements("LINE") select new SalesOrderLine { BookId = Utils.safeString((string)e2.Element("BOOK_ID")), Title = Utils.safeString((string)e2.Element("TITLE")), AuthorName = Utils.safeString((string)e2.Element("AUTHOR_NAME")), Price = Utils.safeDouble((string)e2.Element("PRICE")), TaxCode = Utils.safeString((string)e2.Element("TAX_CODE")), GoodsAmt = Utils.safeDouble((String)e2.Element("GOODS_AMT")), TaxAmt = Utils.safeDouble((string)e2.Element("TAX_AMT")), Qty = Utils.safeInt((string)e2.Element("QTY")) }).ToList <SalesOrderLine>()) }; foreach (SalesOrderData c in query) { list.Add(c); } } catch (Exception ex) { ShowError(ex.Message); return(false); } return(true); }