Asp.net web form ile veritabanı kullanan etkinlik takvimi nasıl yapılır?

alattin (16999) 7 yıl önce sordu

Asp.net web form ve Calendar kontrolü kullanarak, veritabanı kullanan etkinlik takvimi nasıl yapılır?

Basit asp.net web form etkinlik takvimi örneği

Toplam 1 cevap


alattin (16999) 7 yıl önce cevapladı

Asp.net web form ve Calendar kontrolü kullanarak, veritabanı kullanan etkinlik takvimi nasıl yapılır?

Aşağıda temel asp.net, ado.net bileşenleri kullanılarak yapılan bir etkinlik takvimine örnek bulabilirsiniz. Etkinlikler sql veritabanında saklanmakta. 

takvim.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="takvim.aspx.cs" Inherits="WebApplication10.takvim" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
        <asp:Calendar ID="Calendar1" runat="server" OnDayRender="Calendar1_DayRender"  OnVisibleMonthChanged="Calendar1_VisibleMonthChanged"></asp:Calendar>
    </form>
</body>
</html>

takvim.aspx.cs

 

using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace WebApplication10
{
    public partial class takvim : System.Web.UI.Page
    {
        string connectionString = "server=.\\sqlexpress; database=deneme; Integrated security=SSPI";
        int seciliAy = 1;
        List<Etkinlik> etkinlikler = new List<Etkinlik>();

        protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
        {
            SqlConnection con = new SqlConnection(connectionString);
            seciliAy = Calendar1.SelectedDate.Month;
            DateTime seciliTarih = new DateTime(Calendar1.VisibleDate.Year, Calendar1.VisibleDate.Month, 1);
            DateTime sonGun = seciliTarih.AddMonths(1).AddDays(-1);
            SqlCommand komut = new SqlCommand("Select Olay, Tarih from Etkinlik Where Tarih Between @ptarih AND @psonGun", con);
            SqlDataReader rdr;
            komut.Parameters.AddWithValue("@ptarih", seciliTarih);
            komut.Parameters.AddWithValue("@psonGun", sonGun);
            con.Open();
            rdr = komut.ExecuteReader();
            while (rdr.Read())
            {
                etkinlikler.Add(new Etkinlik { Olay = (string)rdr[0], Tarih = (DateTime)rdr[1] });
            }
            con.Close();

        }

        protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            if (e.Day.IsOtherMonth)
            {
                e.Cell.Controls.Clear();
            }
            else
            {
                foreach (var et in etkinlikler)
                {
                    if (e.Day.Date == et.Tarih)
                    {
                        Label lbl = new Label { Text = "<br/>" + et.Olay, CssClass = "etkinlik" };
                        e.Cell.Controls.Add(lbl);

                    }
                }
            }
        }
    }

    public class Etkinlik
    {
        public DateTime Tarih { get; set; }
        public string Olay { get; set; }
    }
}

Sql 


CREATE TABLE [dbo].[Etkinlik](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[Olay] [nvarchar](50) NULL,
	[Tarih] [date] NULL,
 CONSTRAINT [PK_Etkinlik] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

 

alattin 7 yıl önce

@notify iyileştirdiğin kodu bu şekilde paylaşabilirsin, hep bana hep bana yok :)