Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

ASP.Net Calendar (Takvim) Kontrolü

ASP.Net öğrenmeyi seven web yazılımcılara bir kere daha merhabalar :)

Bir önceki ASP.Net makalemizde ASP.Net bileşenlerinden olan BulletedList kontrolünü öğrenmiş ve birkaç küçük örnek yapmıştık ve bugünkü makalemizde ise Calendar kontrolünü öğreneceğiz.
Ancak bu makaleye başlamadan önce DateTime sınıfı ile ilgili bir bilginiz yoksa öncelikle buradaki makalemi okumanızı öneririm.

Calendar kontrolü aslında bildiğimiz takvim örneğidir,amacı ise web sayfamıza giren kullanıcıdan elle tarih bilgisini istememize olanak sağlar.

Visual Studio'yu açalım ve projemize takvim isimli bir web formu oluşturalım:

aspnet-web-form

Oluşturduğumuz bu formda kullanıcıdan tarih bilgisini isteyelim ve seçilen tarihe göre yaşını hesaplayalım.Oldukça basit bir örnek olduğunu düşünüyorum. :)

ToolBox penceresinden web formumuza birer tane Button ve Calendar kontrolünü sürükleyip bırakıyoruz:

aspnet-calendar

Design sekmesine geçerek takvimimizin nasıl göründüğüne bakıyoruz:

aspnet-takvim

C# kod tarafına geçmeden önce Calendar kontrolünü tanıyalım...ASP.Net web uygulamalarında kullanıcıdan tarih bilgisini almak için kullandığımız Calendar kontrolü tıpkı bir önceki makalemizde olduğu gibi Smart Tag (akıllı etiket) özelliğine sahiptir.

calendar-smart-tag

Ancak daha dar kapsama sahip olan bu Smart Tag yalnızca Auto Format seçeneği ile görsel seçenekler sunuyor:

calendar-auto-format

Takvimimizin tasarımını değiştirdiğimize göre artık kod kısmına geçebiliriz :)

Formumuza daha önce eklediğimiz butonumuza çift tıklıyor ve click eventine (olayına) geçtikten sonra Calendar nesnemizden seçilen tarihi yakalıyoruz:

calendar-selecteddate

Calendar kontrolünde seçilen bir tarihi SelectedDate property'si (özellik) ile yakalıyoruz ve bu bize DateTime değeri geri döndürüyor,buraya kadar yaptığımız çok özel bir şey yoktu şimdi ise bugünün tarihi ile seçilen tarih arasındaki farkı almak olacak:

Asp-net-calendar

Şimdi projemizi çalıştıralım ve test edelim:

aspnet-calendar-date

calendar-datetime

Gördüğünüz gibi gayet güzel bir şekilde çalışıyor,çalışıyor ama gözünüze birşey takılmış olmalı..

Diyelim ki ben 1987 doğumlu sıradan bir vatandaşım ve vatandaşlık sisteminde tıpkı bu şekilde bir takvim yapısı yer alıyor.Benden doğum tarihimi gün ay ve yıl formatında istendiğimde bütün ayları tek tek tıklayarak yarım saat boyunca 1987 Ekim ayını mı bulmam gerekiyor?

Klasik ASP.Net kontrolünde ileri geri yıl seçeneği için maalesef böyle bir durum söz konusu,ancak bizler yazılımcı olduğumuz için mutlaka bir çözüm uygulamamız gerekiyor.Dolayısıyla Calendar kontrolümüzün altına iki buton ekliyoruz:

aspnet-calendar-yil-ekle

Görselden ne yapmak istediğimizi az çok anlamışsınızdır; mantık oldukça basit! Kullanıcı hangi tarihi seçerse seçsin butonlardan birine tıkladığında o an ki seçilen ve gösterilen gün ve ay değeri korunup sadece ekrandaki yılı azaltıp artıracağız.

Öncelikle yıl azaltma konusuna değinelim ve önceki yıl butonumuza çift tıklayarak click olayına geçelim:

aspnet-buton-click

Bu noktadan itibaren biraz algoritma konusuna geçiş yapıyoruz ve diyoruz ki; Eğer kullanıcı herhangi bir tarih seçmişse seçilen tarihi,seçmemişse gösterilen tarihi yakala:

calendar-date-time

Tarih bilgisini yakaladığımızı varsayarak bugünün tarihinden 1 yıl azaltıyoruz:

datetime-add-year

ve azalttığımız tarihi Calendar kontrolümüze yeniden tanımlıyoruz:

calendar-date

Biraz karışık ve anlaşılması zor gelebilir ancak ezberlemekten öte anlamaya çalışırsanız açıklama satırlarına yazdığım notlar anlamanıza yardımcı olacaktır.

Şimdi aynı algoritmayı yıl artırma işlemi için uygulayalım:

tarih-algoritmasi

Projemizi çalıştırıyor ve test ediyoruz:

aspnet-calendar-ileri-geri

Böylece ay ay tek tek gezmeden kısa yoldan tarihler arasında gezinti yapabiliyoruz.Bu konunun algoritmasını yorum satırları arasında gördük ve mantığından da kısaca söz edersek şöyle diyebiliriz:

Eğer takvimde bir tarihe (18 Ekim 1987 tarihi Cuma günü gibi) tıklanmışsa ya da tıklanmamışsa ancak ileri-geri
yapılarak farklı bir tarih görüntüleniyorsa (Aralık 1990 gibi) o tarihten 1 yıl azalt ya da artır ve artırılıp azaltılan yeni tarihi aynı takvimin gösterilen tarihi olarak belirle..

Ancak herhangi bir tarih tıklanmamış ve ileri - geri yapılmamış ise bugünün tarihi gösteriliyor varsay! Buradaki bugünün tarihi dememizin nedeni; varsayılan olarak içerisinde Calendar kontrolü olan bir web sayfası açıldığında ilk olarak bugünün tarihini görüntüler.

Tarih azaltma ve arttırma konusunda en kritik nokta ise 63 ve 100.cü satırlardır,bu iki satır daha önce DateTime sınıfı
makalemizde öğrendiğimiz gibi herhangi bir tarihe yıl ekleme ve çıkarma işlemi yapar,böylece bu makalemize oldukça
fayda sağlar. :)

ASP.Net Calendar kontrolünün kullanım amacı ile ilgili olarak şimdilik bu kadarını bilmeniz yeterli diye düşünüyorum,
ilerleyen makalelerimizde tüm ASP.Net kontrollerini aynı anda kullanacağımız bir projede yeniden Calendar kontrolüne
değineceğiz.

O yüzden bir sonraki makalemizde görüşmek üzere hoşçakalın, esen kalın. :)



Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu