protected void BindData()
        {
            try
            {
                List <SaleHeaderDTO> lst      = new List <SaleHeaderDTO>();
                List <SaleHeaderDTO> lstMod   = new List <SaleHeaderDTO>();
                DateTime             dateFrom = string.IsNullOrEmpty(txtDateFrom.Text) ? DateTime.MinValue : DateTime.ParseExact(txtDateFrom.Text, "dd/MM/yyyy", new System.Globalization.CultureInfo("en-US"));
                DateTime             dateTo   = string.IsNullOrEmpty(txtDateTo.Text) ? DateTime.MaxValue : DateTime.ParseExact(txtDateTo.Text, "dd/MM/yyyy", new System.Globalization.CultureInfo("en-US")).AddDays(1);
                //DateTime date = string.IsNullOrEmpty(txtDate.Text) ? DateTime.MinValue : DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", new System.Globalization.CultureInfo("en-US"));
                string AccName = txtCustName.Text;
                string SN      = txtSN.Text;
                string Tel     = txtTel.Text;
                Int32  ItemID  = 0;
                ItemID = ToInt32(ddlItem.SelectedItem.Value);

                using (BillingEntities cre = new BillingEntities())
                {
                    //lst = (from h in cre.TransSaleHeaders
                    //       join d in cre.TransSaleDetails on h.SaleHeaderID equals d.SaleHeaderID into dnull
                    //       from d in dnull.DefaultIfEmpty()
                    //       join i in cre.MasItems on d.ItemID equals i.ItemID into inull
                    //       from i in inull.DefaultIfEmpty()
                    //       where h.CustomerName.Contains(AccName)
                    //       //&& d.SerialNumber.Contains(SN)
                    //       && h.ReceivedDate >= dateFrom && h.ReceivedDate < dateTo
                    //       //date == DateTime.MinValue ? true : h.ReceivedDate.HasValue ? h.ReceivedDate.Value == date : true
                    //       select new SaleHeaderDTO()
                    //       {
                    //           SaleHeaderID = h.SaleHeaderID,
                    //           CustomerName = h.CustomerName,
                    //           ReceivedDate = h.ReceivedDate,
                    //           ReceivedBy = h.ReceivedBy,
                    //           SaleNumber = h.SaleNumber,
                    //           ItemCode = i.ItemCode,
                    //           ItemName = i.ItemName,
                    //           ItemID = i.ItemID,
                    //           dAmount = d.Amount,
                    //           ItemPrice = d.ItemPrice.HasValue ? d.ItemPrice.Value : 0,
                    //           Discount = d.Discount.HasValue ? d.Discount.Value : 0,
                    //           SerialNumber = d.SerialNumber,
                    //       }).ToList();

                    lst = (from d in cre.GetTransSaleList(dateFrom, dateTo)
                           select new SaleHeaderDTO()
                    {
                        SaleHeaderID = d.SaleHeaderID,
                        CustomerName = d.CustomerName,
                        Tel = d.tel,
                        ReceivedDate = d.ReceivedDate,
                        ReceivedBy = d.ReceivedBy,
                        SaleNumber = d.SaleNumber,
                        ItemCode = d.ItemCode,
                        ItemName = d.ItemName,
                        ItemID = d.ItemID.HasValue ? d.ItemID.Value : 0,
                        dAmount = d.Amount,
                        ItemPrice = d.ItemPrice.HasValue ? d.ItemPrice.Value : 0,
                        Discount = d.Discount.HasValue ? d.Discount.Value : 0,
                        SerialNumber = d.SerialNumber,
                        BillType = d.BillType,
                    }).ToList();
                };

                if (lst != null && lst.Count > 0)
                {
                    if (AccName != "")
                    {
                        lst = lst.Where(w => w.CustomerName.Contains(AccName)).ToList();
                    }

                    if (Tel != "")
                    {
                        lst = lst.Where(w => !string.IsNullOrEmpty(w.Tel) && w.Tel.Contains(Tel)).ToList();
                    }

                    if (SN != "")
                    {
                        lst = lst.Where(w => !string.IsNullOrEmpty(w.SerialNumber) && w.SerialNumber.Contains(SN)).ToList();
                    }

                    if (ItemID != 0)
                    {
                        lst = lst.Where(w => w.ItemID.Equals(ItemID)).ToList();
                    }

                    if (lst != null && lst.Count > 0)
                    {
                        lstMod        = ModDataFromSale(lst);
                        gv.DataSource = lstMod;
                    }

                    if (ItemID != 0 || SN != "")
                    {
                        gv.Columns[5].Visible = false;
                    }
                    else
                    {
                        gv.Columns[5].Visible = true;
                    }
                }
                else
                {
                    gv.DataSource = null;
                }

                gv.DataBind();
            }
            catch (Exception ex)
            {
                SendMailError(ex.Message, System.Reflection.MethodBase.GetCurrentMethod());
            }
        }