Thursday, 15 January 2015

Custom Calender Which Shows Holidays On MouseHover

No comments
For Calender

.CS

    static string Day = "";
    static string Mon = "";
    static string Yr = "";

    protected void Page_Load(object sender, EventArgs e)
    {

        for (int i = 1991; i <= 2099; i++)
        {
            DropYear.Items.Add(new ListItem(i.ToString(), i.ToString()));
        }

        if (!IsPostBack)
        {
           //For current year and month selected in dropdownlist

            DropYear.SelectedValue = DateTime.Now.Year.ToString();
            DropMonth.SelectedValue = DateTime.Now.Month.ToString("dddd");
            GetDate();
        }
    }

//To Get Holiday Date From Database

    public DataTable Get()
    {
        SqlConnection con = new SqlConnection("Data Source=LENOVO-PC\\SQLEXPRESS;Initial Catalog=Example;Persist Security Info=True;User ID=sa;Password=sa");
        con.Open();
        SqlCommand cmd = new SqlCommand("select *,CONVERT(varchar(50),Date,106) as dt from Calender where SUBSTRING(CONVERT(varchar(50),Date,106),4,4) =@Mnth and SUBSTRING(CONVERT(varchar(50),Date,106),8,12) =@yr", con);      
        cmd.Parameters.AddWithValue("@Mnth", DropMonth.SelectedItem.Text);
        cmd.Parameters.AddWithValue("@yr", DropYear.SelectedItem.Text);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        con.Close();
        return dt;
    }

//To Create Calender and Turn Holiday Date Color To Blue And Sunday To Red

    public void GetDate()
    {
        DataTable GetHolyday = Get();
        List<string> GetMnth = new List<string>();
        List<string> Holiday = new List<string>();
        if (GetHolyday.Rows.Count > 0)
        {
            for (int i = 0; i < GetHolyday.Rows.Count; i++)
            {
                string Gmnth = GetHolyday.Rows[i]["dt"].ToString();
                string[] splitMnth = Gmnth.Split(new char[] { ' ' });
                string x1 = splitMnth[0].ToString().Substring(0, 1);
                if (splitMnth[0].ToString().Substring(0, 1) == "0")
                {
                    string x = splitMnth[0].ToString().Substring(1, 1);
                    GetMnth.Add(splitMnth[0].ToString().Substring(1, 1));
                    Holiday.Add(GetHolyday.Rows[i]["HolidayName"].ToString());
                }
                else
                {
                    GetMnth.Add(splitMnth[0].ToString());
                    Holiday.Add(GetHolyday.Rows[i]["HolidayName"].ToString());
                }
            }

            string Gm = GetHolyday.Rows[0]["dt"].ToString();
            string[] s = Gm.Split(new char[] { ' ' });
            Day = s[0];
            Mon = s[1];
            Yr = s[2];
        }


        string month = DropMonth.SelectedItem.Text;
        int yearofMonth = Convert.ToInt32(DropYear.SelectedItem.Text);

        DateTime dateTime = Convert.ToDateTime("01-" + month + "-" + yearofMonth);
        DataRow dr;
        DataTable dt = new DataTable();
        dt.Columns.Add("Monday");
        dt.Columns.Add("Tuesday");
        dt.Columns.Add("Wednesday");
        dt.Columns.Add("Thursday");
        dt.Columns.Add("Friday");
        dt.Columns.Add("Saturday");
        dt.Columns.Add("Sunday");
        dr = dt.NewRow();
        for (int i = 0; i < DateTime.DaysInMonth(dateTime.Year, dateTime.Month); i += 1)
        {
            if (Convert.ToDateTime(dateTime.AddDays(i)).ToString("dddd") == "Monday")
            {
                dr["Monday"] = i + 1;
            }
            if (dateTime.AddDays(i).ToString("dddd") == "Tuesday")
            {
                dr["Tuesday"] = i + 1;
            }
            if (dateTime.AddDays(i).ToString("dddd") == "Wednesday")
            {
                dr["Wednesday"] = i + 1;

            }
            if (dateTime.AddDays(i).ToString("dddd") == "Thursday")
            {
                dr["Thursday"] = i + 1;
            }
            if (dateTime.AddDays(i).ToString("dddd") == "Friday")
            {
                dr["Friday"] = i + 1;
            }
            if (dateTime.AddDays(i).ToString("dddd") == "Saturday")
            {
                dr["Saturday"] = i + 1;
            }
            if (dateTime.AddDays(i).ToString("dddd") == "Sunday")
            {
                dr["Sunday"] = i + 1;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                continue;
            }
            if (i == DateTime.DaysInMonth(dateTime.Year, dateTime.Month) - 1)
            {
                dt.Rows.Add(dr);
                dr = dt.NewRow();
            }
        }

        GridView1.DataSource = dt;
        GridView1.DataBind();


        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            GridView1.Rows[i].Cells[i].BackColor = System.Drawing.Color.White;
            GridView1.Rows[i].Cells[6].ForeColor = System.Drawing.Color.Red;
        }

        foreach (GridViewRow gr in GridView1.Rows)
        {
            for (int i = 0; i < GridView1.Columns.Count; i++)
            {
                if (DropYear.SelectedItem.Text == Yr && DropMonth.SelectedItem.Text == Mon)
                {
                    if (GetMnth.Contains(gr.Cells[i].Text))
                    {
                        gr.Cells[i].BackColor = System.Drawing.Color.White;
                        gr.Cells[i].ForeColor = System.Drawing.Color.Blue;

                        for (int j = 0; j < GetMnth.Count; j++)
                        {
                            if (gr.Cells[i].Text == GetMnth[j].ToString())
                            {
                                gr.Cells[i].ToolTip = Holiday[j].ToString();
                            }
                        }
                    }
                }
            }
        }
    }

    protected void Go_Click(object sender, EventArgs e)
    {
        GetDate();
    }



.ASPX

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
   <link href="jquery.tooltip.css" rel="stylesheet" type="text/css" />

    <script src="js/jquery.js" type="text/javascript"></script>

    <script src="js/jquery.tooltip.js" type="text/javascript"></script>

    <script src="js/jquery.dimensions.js" type="text/javascript"></script>
    <style type="text/css">
        .GridviewDiv
        {
            font-size: 100%;
            font-family: 'Lucida Grande' , 'Lucida Sans Unicode' , Verdana, Arial, Helevetica, sans-serif;
            color: #303933;
        }
        body
        {
            font-size: 10pt;
            font-family: Arial;
        }
        body
        {
            font-family: Arial;
            font-size: 10pt;
        }
        table
        {
            border: 1px solid #ccc;
        }
        table th
        {
            background-color: #F7F7F7;
            color: #333;
            font-weight: bold;
        }
        table th, table td
        {
            padding: 5px;
            border-color: #ccc;
        }
        .tooltip
        {
            position: absolute;
            top: 0;
            left: 0;
            z-index: 3;
            display: none;
            background-color: #FB66AA;
            color: White;
            padding: 5px;
            font-size: 10pt;
            font-family: Arial;
        }
        table td
        {
            cursor: pointer;
        }
        }
    </style>
    <script type="text/javascript" language="javascript">
        $(function () {
            $('#divGrid *').tooltip();
        })
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="divGrid" style="width: auto; float: left">
        <asp:DropDownList ID="DropMonth" runat="server" CssClass="GridviewDiv" Width="100px">
            <asp:ListItem>Jan</asp:ListItem>
            <asp:ListItem>Feb</asp:ListItem>
            <asp:ListItem>Mar</asp:ListItem>
            <asp:ListItem>Apr</asp:ListItem>
            <asp:ListItem>May</asp:ListItem>
            <asp:ListItem>Jun</asp:ListItem>
            <asp:ListItem>Jul</asp:ListItem>
            <asp:ListItem>Aug</asp:ListItem>
            <asp:ListItem>Sep</asp:ListItem>
            <asp:ListItem>Oct</asp:ListItem>
            <asp:ListItem>Nov</asp:ListItem>
            <asp:ListItem>Dec</asp:ListItem>
        </asp:DropDownList>
        <asp:DropDownList ID="DropYear" runat="server" CssClass="GridviewDiv">
        </asp:DropDownList>
        <asp:Button ID="Go" runat="server" Text="Go" OnClick="Go_Click" CssClass="GridviewDiv"/>
        <br /><br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            >
            <Columns>
                <asp:BoundField DataField="Monday" HeaderText="Monday" />
                <asp:BoundField DataField="Tuesday" HeaderText="Tuesday" />
                <asp:BoundField DataField="Wednesday" HeaderText="Wednesday" />
                <asp:BoundField DataField="Thursday" HeaderText="Thursday" />
                <asp:BoundField DataField="Friday" HeaderText="Friday" />
                <asp:BoundField DataField="Saturday" HeaderText="Saturday" />
                <asp:BoundField DataField="Sunday" HeaderText="Sunday" />
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>


JS and CSS

Download JS