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

0

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

alattin alattin (17125)
7 yıl önce sordu

    Toplam 1 Cevap


    0

    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 alattin (17125)
    7 yıl önce cevaplandı

    • @notify iyileştirdiğin kodu bu şekilde paylaşabilirsin, hep bana hep bana yok :) alattin 7 yıl önce
    üyelik gerektirir

    Cevap yazabilmek için üye girişi yapmalısınız.

    Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
    uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol