ASP .NET Calendar Kontrolü ile Ajanda Oluşturmak
ASP.NET'te Calendar Kontrolü kullanarak kişiye özel ajanda oluşturabiliriz.ASP ortamında Takvim eklemek istersek ToolBox'tan Calendar kontrolünü seçmeliyiz. Bu kontrollerle ajanda oluşturabileceğimiz gibi rezervasyon oluşturma, kütüphanelerde ödünç işlemlerinde tarih bilgisi alırken kullanabiliriz.Takvim'in tasarımını da Properties'ten değiştirebilriz.
Ajanda oluşturma işlemi için öncelikle tarih ve etkinlik bilgisini tutan veri kaynağına ihtiyacımız var. Bu örnek için bir Etkinlik Class'ı oluşturdum. day,month,year,plan properties'ini tutar.
public class Etkinlik
{
//Properties
public int day { get; set; }
public int month { get; set; }
public int year { get; set; }
public string plan { get; set; }
//Constructor
public Etkinlik(int dd,int mm,int yyyy,string plan)
{
day = dd;
month = mm;
year = yyyy;
this.plan = plan;
}
}
Classımızı oluşturduktan sonra bir adet Calendar ekledim.Tasarımını da Design bölümünde takvim'in sağüstündeki kulakçığa tıklayınca AutoFormattan classic'i seçtim.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Takvim1.aspx.cs" Inherits="CalendarSamples.Takvim1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style>
.takvim{
margin-left:27%;
margin-top:100px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="takvim">
<asp:Calendar ID="ajanda" runat="server" OnDayRender="ajanda_DayRender" BackColor="White" BorderColor="Black" DayNameFormat="Shortest" Font-Names="Times New Roman" Font-Size="10pt" ForeColor="Black" Height="384px" NextPrevFormat="FullMonth" TitleFormat="Month" Width="632px" >
<DayHeaderStyle BackColor="White" Font-Bold="True" Font-Size="7pt" ForeColor="red" Height="10pt" />
<DayStyle Width="14%" />
<NextPrevStyle Font-Size="8pt" ForeColor="yellow" Font-Bold="true"/>
<OtherMonthDayStyle ForeColor="red" />
<SelectedDayStyle BackColor="#CC3333" ForeColor="White" />
<SelectorStyle BackColor="#CCCCCC" Font-Bold="True" Font-Names="Verdana" Font-Size="8pt" ForeColor="#333333" Width="1%" />
<TitleStyle BackColor="Aqua" Font-Bold="True" Font-Size="13pt" ForeColor="red" Height="14pt" />
<TodayDayStyle BackColor="#CCCC99" />
</asp:Calendar>
</div>
</form>
</body>
</html>
Sıra kod tarafında ajandamıza veri eklemeye geldi.
public partial class Takvim1 : System.Web.UI.Page
{
List <Etkinlik> Etkinlikler = new List<Etkinlik>();
protected void Page_Load(object sender, EventArgs e)
{
Etkinlikler.Add(new Etkinlik(21, 1, 2018, "ASP Sınavı"));
Etkinlikler.Add(new Etkinlik(4, 2, 2018,"C# Sınavı"));
}
protected void ajanda_DayRender(object sender, DayRenderEventArgs e)
{
Label lbl = new Label();
foreach (Etkinlik item in Etkinlikler)
{
if ((Convert.ToInt32(e.Day.Date.Day) == item.day) && (Convert.ToInt32(e.Day.Date.Month) == item.month) && (Convert.ToInt32(e.Day.Date.Year) == item.year))
{
string planKaydet = item.plan;
if (planKaydet != "")
{
lbl.Text = "<br/>";
lbl.Text += "<b>" + planKaydet + "</b>";
e.Cell.Controls.Add(lbl);
}
}
}
}
}
Etkinliklerimizi bir arada tutacak Etkinlikler adında bir generic List oluşturduk.Bu list Etkinlik türünden değer tutacak. Sayfa yüklenirken bu değerleri Etkinlikler.Add() metodu ile listemize ekleyecek.DayRender eventi ile e takvimdeki hücrelerin içeriği değiştirilebilir. ajanda_DayRender eventimizde, foreach döngüsünde dönerek etkinliğimizi yazdırıyoruz. lbl Labelini oluşturduktan sonra foreach döngsünde Etkinlikler listesinde döndük.if'te takvimde gün gün kontrol ediyor eğer listemizin elemanı ile gün,ay,yıl olarak eşleşme varsa etkinliğimizi label'de yazdırıp , o güne ait cell'i güncelleyecek.
Yorumlar
Yorum Gönder