private void ListFilteredAttendanceList(DateTime month, string officeID)
        {
            try
            {
                grdList.Rows.Clear();
                grdList.Columns.Clear();
                AttendanceDB      Adb     = new AttendanceDB();
                List <DateTime>   dates   = GetDates(dtMonth.Value.Month, dtMonth.Value.Year); // get days for selected month and year
                List <attendance> AttStat = Adb.getEmployeeAttendanceList(month, officeID);
                if (AttStat.Count <= 0)
                {
                    MessageBox.Show("No data to show");
                    return;
                }
                grdList.Columns.Add("Slno", "Slno");
                grdList.Columns.Add("EmployeeID", "ID");
                grdList.Columns.Add("EmployeeName", "Employee Name");
                grdList.Columns.Add("Office", "Office");
                grdList.Columns["Slno"].Frozen         = true;
                grdList.Columns["EmployeeID"].Frozen   = true;
                grdList.Columns["EmployeeName"].Frozen = true;
                grdList.Columns["Office"].Frozen       = true;
                grdList.Columns["Slno"].Width          = 30;
                grdList.Columns["EmployeeID"].Width    = 50;
                foreach (DateTime dt in dates)
                {
                    //if (dt.Date < DateTime.Now)
                    //{
                    grdList.Columns.Add(dt.Date.ToString("yyyy-MM-dd"), dt.Date.ToString("dd"));
                    grdList.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                    grdList.Columns[dt.Date.ToString("yyyy-MM-dd")].Width = 25;
                    //}
                }
                var emplst = AttStat.GroupBy(G => G.EmployeeID).Select(A => new
                {
                    EmployeeID   = A.Key,
                    EmployeeName = A.First().EmployeeName,
                    officeName   = A.First().officeName
                });
                foreach (var att in emplst)
                {
                    grdList.Rows.Add();
                    grdList.Rows[grdList.RowCount - 1].Cells["Slno"].Value         = grdList.RowCount;
                    grdList.Rows[grdList.RowCount - 1].Cells["EmployeeID"].Value   = Convert.ToInt32(att.EmployeeID);
                    grdList.Rows[grdList.RowCount - 1].Cells["EmployeeName"].Value = att.EmployeeName;
                    grdList.Rows[grdList.RowCount - 1].Cells["Office"].Value       = att.officeName;

                    foreach (DataGridViewColumn dgvc in grdList.Columns)
                    {
                        List <attendance> lst = AttStat.Where(x => x.EmployeeID == att.EmployeeID).ToList();
                        foreach (attendance lt in lst)
                        {
                            if (dgvc.Name == lt.StatusDate.ToString("yyyy-MM-dd"))
                            {
                                grdList.Rows[grdList.RowCount - 1].Cells[dgvc.Name].Value = getAtstatus(lt.AttendenceStatus);
                            }
                        }
                    }
                }

                if (grdList.Rows.Count != 0 && Main.itemPriv[1] == true && (Main.itemPriv[2] == true || Main.itemPriv[3] == true))
                {
                    btnExportToExcel.Visible = true;
                }
                else
                {
                    btnExportToExcel.Visible = false;
                }
                grdList.Visible    = true;
                pnlgrdList.Visible = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error 3 : ListFilteredAttendanceListLeave() - " + ex.ToString());
            }
        }