Skip to main content

DateRangePicker

Kullanıcının takvimden bir başlangıç ve bir bitiş tarihi seçerek bir tarih aralığı belirlemesini sağlayan nesnedir. İzin tarihleri, proje başlangıç-bitişi, rezervasyon dönemi gibi iki uçlu tarih alanları için kullanılır.

Ne zaman kullanılır?

İki uçlu (başlangıç ve bitiş) tarih seçimi gereken her yerde idealdir: izin dönemi, sözleşme süresi, raporlama aralığı. Tek bir tarih için DatePicker, saat içeren tek bir an için DateTimePicker daha uygundur.

Değer tipi: DateTime?

Değer boş (null) olabilir; kullanıcı henüz seçim yapmadıysa değer atanmamıştır. Başlangıç ve bitiş tarihleri nesnenin StartDate / EndDate ayarlarıyla yönetilir.

Tasarımcı özellikleri

Bir DateRangePicker seçildiğinde Özellik Görüntüleyici sekmelere ayrılır.

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. DateRangePicker1). Koddan bu adla erişirsiniz.
Field NameVeritabanındaki alanın adı.

Label

Nesnenin yanındaki etiketi yönetir.

ÖzellikAçıklama
Caption / TextEtiketin yazısı (çok dilli olabilir).
PositionEtiketin yeri: solda (Left) veya üstte (Top).
Width / HeightEtiketin boyutu.
FontYazı tipi, kalın / italik / altı çizili.
Show ColonEtiketin sonuna iki nokta (:) ekler.
Horizontal Align / Vertical AlignEtiketin hizası.
VisibleEtiketi gösterir veya gizler.

Behavior

ÖzellikAçıklama
StartDateBaşlangıç tarihi ucunun ayarları (varsayılan değer, sınırlar).
EndDateBitiş tarihi ucunun ayarları (varsayılan değer, sınırlar).
ModeTakvimin seçim kipi (gün, ay, yıl gibi).
FormatTarihin ekranda gösterileceği biçim (ör. dd.MM.yyyy).
ShowTimeTarihle birlikte saat seçimini de açar.
ShowTodayTakvimde "Bugün" düğmesini gösterir.
ActiveDateTypeTakvim açıldığında hangi tarihin etkin geleceğini belirler.
DateLimitTypeSeçilebilir tarih aralığına getirilen sınırın türü.
DisabledDateTypeHangi tür tarihlerin kapatılacağını belirler (ör. geçmiş / gelecek).
DisabledDateRangeBugüne göre kaç günlük bir aralığın kapatılacağını belirler.
DisabledDatesTek tek seçilemez yapılan tarihlerin listesi.
AllowClearSeçimi temizleme (x) düğmesini gösterir.
ReadOnlyAlanı salt okunur yapar.
RequiredAlanı zorunlu yapar; boşsa form kaydedilmez.
Tab IndexTab tuşuyla geçiş sırasını belirler.

Appearance

ÖzellikAçıklama
Visible / Client VisibleNesnenin görünürlüğü.
Enabled / Client EnabledNesnenin aktif olup olmadığı.
PlaceholderAlan boşken görünen soluk ipucu yazısı.
Text AlignYazının hizası.
TitleFare ile üzerine gelince çıkan başlık (tooltip).
Size TypeGenişlik davranışı (sabit / esnek).

Olaylar

Bir nesne açılırken olaylar belirli bir sırayla tetiklenir; kullanıcı tarih seçince de ayrı olaylar çalışır. Doğru kodu doğru olaya yazmak için bu sırayı bilmek işinizi kolaylaştırır.

Açılış sırası: OnInitOnLoadOnDataLoadOnPreRenderOnRender

Kullanıcı seçim yaparken: OnTextChangingOnTextChanged, tarih kesinleşince OnValueChangingOnValueChanged

Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda. DateRangePicker'ın iki tarafta sunduğu olaylar farklıdır.

Sunucu olayları (Server)

OlayNe zaman çalışır
OnInitForm açılırken nesne oluşturulduğunda, en başta.
OnLoadOnInit'in hemen ardından, nesne yüklenince.
OnRenderNesne ekrana çizilirken.
OnTextChangingGörünen metin değişmeden hemen önce.
OnTextChangedGörünen metin değiştikten hemen sonra.
OnValueChangingTarih değişmeden hemen önce (iptal edilebilir).
OnValueChangedKullanıcı tarihi seçip değer kesinleştiğinde. En sık kullanılan olaydır.
OnValidatingAlan doğrulanırken çalışır; geçersiz seçim burada engellenebilir.

İstemci olayları (Client)

Sunucudaki olaylara ek olarak tarayıcı tarafında şunlar da vardır:

OlayNe zaman çalışır
OnDataLoadNesnenin verisi yüklendiğinde.
OnPreRenderNesne ekrana çizilmeden hemen önce.
OnClick / OnDoubleClickNesneye tıklanınca / çift tıklanınca.
OnPropertyChanging / OnPropertyChangedBir özellik kodla değiştirilmeden önce / sonra.
Olay parametreleri

OnValueChanging / OnTextChanging olaylarının parametresi (args TS, e C#) şunları taşır:

  • newValue / NewValue — seçilmek istenen yeni tarih
  • oldValue / OldValue — önceki tarih
  • cancel / Canceltrue yapılırsa değişiklik iptal edilir (yalnızca Changing olaylarında)

Changed olaylarında cancel yoktur (değişiklik artık gerçekleşmiştir).

Kod örnekleri

Bir DateRangePicker'a üç yerden erişebilirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişirsiniz. Değer DateTime? olduğu için boş olabilir; okumadan önce kontrol edin:

// Oku
DateTime? baslangic = DateRangePicker1.Value;
if (baslangic.HasValue)
{
DateTime tarih = baslangic.Value;
}

// Yaz
DateRangePicker1.Value = DateTime.Today;

Akış (Flow) kodu (C#, sunucu)

Akış kodunda nesneye Document1.Controls üzerinden erişirsiniz:

// Oku
DateTime? baslangic = Document1.Controls["DateRangePicker1"].Value;

// Yaz
Document1.Controls["DateRangePicker1"].Value = DateTime.Today;

İstemci kodu (TypeScript, tarayıcı)

İstemci tarafında nesnelere this. ile erişilir ve özellik adları küçük harfle yazılır (value, text):

this.DateRangePicker1.value = null;
this.DateRangePicker1.text = "";
Boş değere dikkat

DateRangePicker'ın değeri DateTime? olduğu için kullanıcı seçim yapmadığında null olur. C# tarafında okumadan önce HasValue ile kontrol edin, yoksa hata alırsınız.

Örnek: geçmiş tarihi engelleme (OnValueChanging)

OnValueChanging tarih değişmeden hemen önce çalışır; istemediğiniz bir seçimi burada iptal edebilirsiniz. Aşağıdaki örnekte bugünden önceki bir tarih seçilmesi engellenir.

İstemci (TypeScript):

async DateRangePicker1_OnValueChanging(args: Controls.EventArgs.IPropertyChangingEventArgs<Date>) {
if (args.newValue && args.newValue < new Date()) {
args.cancel = true; // Tarih değişimini iptal eder
this.showMessage("Uyarı", "Geçmiş bir tarih seçemezsiniz.", "Validation");
}
}

Sunucu (C#):

void DateRangePicker1_OnValueChanging(object sender, PropertyChangingEventArgs<DateTime?> e)
{
if (e.NewValue.HasValue && e.NewValue.Value < DateTime.Today)
{
e.Cancel = true;
ShowMessage("Uyarı", "Geçmiş bir tarih seçemezsiniz.",
Bimser.CSP.FormControls.RuleManager.AlertType.Validation);
}
}

İpuçları

  • Seçilemeyecek tarihleri kod ile kontrol etmek yerine DisabledDates, DisabledDateType ve DisabledDateRange ayarlarını kullanın; tasarımda belirlemek daha temizdir.
  • Nesnenin Required özelliğini kullanarak kod ile boş/dolu kontrolü yapmanıza gerek kalmaz.
  • Saat de seçtirmeniz gerekiyorsa ShowTime özelliğini açın.
  • Ekrandaki tarih biçimini Format ile (ör. dd.MM.yyyy) belirleyebilirsiniz.
Tüm tasarımcı özellikleri (tam liste)

General: Name, Field Name

Label: Caption, Text, Position, Left, Width, Height, Font (Bold / Italic / Underline), Ellipsis, Visible, Show Colon, Horizontal Align, Vertical Align, Mark Char, Mark Position

Behavior: ActiveDateType, AllowClear, DateLimitType, DisabledDateRange, DisabledDates, DisabledDateType, EndDate, Format, Mode, ReadOnly, Required, ShowTime, ShowToday, StartDate, TabIndex

Appearance: ClientEnabled, ClientVisible, Enabled, Placeholder, SizeType, Text, TextAlign, Title, Value, Visible

Olaylar (Client): OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged, OnClick, OnDoubleClick, OnDataLoad, OnValueChanging, OnValueChanged, OnTextChanging, OnTextChanged, OnValidating

Olaylar (Server): OnInit, OnLoad, OnRender, OnValueChanging, OnValueChanged, OnTextChanging, OnTextChanged, OnValidating