protected void goSearchBy_Click(object sender, EventArgs e) { SearchFilterTypes searchFilterType = convertFilterType(this.ddlSearchBy.SelectedValue); rgdInvoices.DataSource = searchInvoices(SearchTypes.ByOthers, searchFilterType) ?? new List <Invoice>(); rgdInvoices.MasterTableView.NoMasterRecordsText = (string)GetLocalResourceObject("ltNoRecords.Text"); rgdInvoices.DataBind(); Session["InvoiceSearchType"] = searchFilterType; }
private List <Invoice> searchInvoices(SearchTypes searchType, SearchFilterTypes filterType) { //begin - shan - mar 14, 2012 - set default value to be error value (-999) //based on that differentiate whether zero has been entered or fields has been left empty //while searching based on the amount //decimal startAmount = 0; //decimal.TryParse(txtStartAmount.Text.Trim(), out startAmount); //decimal endAmount = 0; //decimal.TryParse(txtEndAmount.Text.Trim(), out endAmount); var invoices = new List <Invoice>(); decimal startAmount = -999; decimal endAmount = -999; startAmount = decimal.TryParse(txtStartAmount.Text.Trim(), out startAmount) ? startAmount : -999; endAmount = decimal.TryParse(txtEndAmount.Text.Trim(), out endAmount) ? endAmount : -999; var searchValue = txtSearchBy.Text.Trim(); if (searchType == SearchTypes.ByDateOrAmount) { invoices = InvoiceProvider.SearchInvoice(new InvoiceSearchFilter() { SearchByDateOrAmount = true, FromDate = FromDate.SelectedDate, ToDate = ToDate.SelectedDate, StartAmount = (0 > startAmount) ? (decimal?)null : startAmount, EndAmount = (0 > endAmount) ? (decimal?)null : endAmount, }, DistributorID); } else { var searchFilter = new InvoiceSearchFilter(); searchFilter.SearchByDateOrAmount = false; searchFilter.FirstName = (filterType == SearchFilterTypes.FirstName) ? searchValue : string.Empty; searchFilter.LastName = (filterType == SearchFilterTypes.LastName) ? searchValue : string.Empty; searchFilter.StreetAddress = (filterType == SearchFilterTypes.StreetAddress) ? searchValue : string.Empty; searchFilter.City = (filterType == SearchFilterTypes.City) ? searchValue : string.Empty; searchFilter.State = (filterType == SearchFilterTypes.State) ? searchValue : string.Empty; searchFilter.ZipCode = (filterType == SearchFilterTypes.ZipCode) ? searchValue : string.Empty; searchFilter.SKU = (filterType == SearchFilterTypes.SKU) ? searchValue : string.Empty; searchFilter.Description = (filterType == SearchFilterTypes.Description) ? searchValue : string.Empty; //begin - shan - mar 14, 2012 - assign null based on error value //to differentiate whether to search by 0 or empty field //based on this, while filtering check for null or 0 decimal parseValue = -999; parseValue = decimal.TryParse(searchValue, out parseValue) ? parseValue : -999; { searchFilter.TotalVolumePoints = (filterType == SearchFilterTypes.TotalVolumePoints) ? (0 < parseValue ? parseValue : (decimal?)null) : (decimal?)null; searchFilter.InvoiceTotal = (filterType == SearchFilterTypes.InvoiceTotal) ? (0 < parseValue ? parseValue : (decimal?)null) : (decimal?)null; } invoices = InvoiceProvider.SearchInvoice(searchFilter, DistributorID); //shan - mar 15, 2012 - to set secondary sorting to be of invoice # //sort the invoices to be ordered by invoice # descendingg //while applying sorting from grid that should get filter as the primary sorting if (null != invoices && invoices.Count > 0) { invoices = invoices.OrderByDescending(inv => inv.DistributorInvoiceNumber).ToList(); } } return(invoices); }