Radio
Aynı gruptaki seçeneklerden yalnızca birinin işaretlenebildiği radyo düğmesi nesnesidir. Birden çok Radio aynı GroupName ile bir grup oluşturur; kullanıcı birini seçince grubun diğerleri otomatik olarak boşalır.
Değer tipi: bool
Ne zaman kullanılır?
Birbirini dışlayan az sayıda seçenek arasından tek bir seçim yaptırmak için idealdir: cinsiyet, evet/hayır, öncelik düzeyi. Tek bir açık/kapalı durumu için CheckBox, çok sayıda seçenek için ComboBox daha uygundur.
Tasarımcı özellikleri
Bir Radio seçildiğinde Özellik Görüntüleyici sekmelere ayrılır.
General
| Özellik | Açıklama |
|---|---|
Name | Nesnenin koddaki adı (ör. Radio1). Koddan bu adla erişirsiniz. |
Field Name | Veritabanındaki alanın adı. |
Label
Nesnenin yanındaki etiketi yönetir.
| Özellik | Açıklama |
|---|---|
Caption / Text | Etiketin yazısı (çok dilli olabilir). |
Position | Etiketin yeri: solda (Left) veya üstte (Top). |
Width / Height | Etiketin boyutu. |
Font | Yazı tipi, kalın / italik / altı çizili. |
Show Colon | Etiketin sonuna iki nokta (:) ekler. |
Horizontal Align / Vertical Align | Etiketin hizası. |
Visible | Etiketi gösterir veya gizler. |
Behavior
| Özellik | Açıklama |
|---|---|
GroupName | Radyo grubunun adı. Aynı GroupName değerine sahip nesneler tek bir grup oluşturur; gruptan yalnızca biri seçili olabilir. |
ReadOnly | Nesneyi salt okunur yapar; kullanıcı seçimi değiştiremez. |
Required | Alanı zorunlu yapar; gruptan biri seçilmeden form kaydedilmez. |
Tab Index | Tab tuşuyla geçiş sırasını belirler. |
Appearance
| Özellik | Açıklama |
|---|---|
Visible / Client Visible | Nesnenin görünürlüğü. |
Enabled / Client Enabled | Nesnenin aktif olup olmadığı. |
Value | Nesnenin işaretli olup olmadığı (true / false). |
Label | Nesnenin etiket yazısı (çok dilli). |
Title | Fareyle üzerine gelince çıkan ipucu yazısı (çok dilli). |
Olaylar
Bir nesne açılırken olaylar belirli bir sırayla tetiklenir; kullanıcı seçimi değiştirince 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ı: OnInit → OnLoad → OnDataLoad → OnPreRender → OnRender
Kullanıcı seçim yapınca: OnValueChanging → OnValueChanged
Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda. Radio'nun iki tarafta sunduğu olaylar farklıdır.
Sunucu olayları (Server)
| Olay | Ne zaman çalışır |
|---|---|
OnInit | Form açılırken nesne oluşturulduğunda, en başta. |
OnLoad | OnInit'in hemen ardından, nesne yüklenince. |
OnRender | Nesne ekrana çizilirken. |
OnValidating | Alan doğrulanırken; geçersiz değeri burada engelleyebilirsiniz. |
OnValueChanging | Seçim değişmeden hemen önce (iptal edilebilir). |
OnValueChanged | Kullanıcı seçimi değiştirip değer kesinleştiğinde. En sık kullanılan olaydır. |
İstemci olayları (Client)
Sunucudaki olaylara ek olarak tarayıcı tarafında şunlar da vardır:
| Olay | Ne zaman çalışır |
|---|---|
OnDataLoad | Nesnenin verisi yüklendiğinde. |
OnPreRender | Nesne ekrana çizilmeden hemen önce. |
OnClick / OnDoubleClick | Nesneye tıklanınca / çift tıklanınca. |
OnPropertyChanging / OnPropertyChanged | Bir özellik kodla değiştirilmeden önce / sonra. |
OnValueChanging olayının parametresi (args TS, e C#) şunları taşır:
newValue/NewValue— seçilmek istenen yeni değer (bool)oldValue/OldValue— önceki değercancel/Cancel—trueyapılırsa değişiklik iptal edilir
OnValueChanged olayında cancel yoktur (değişiklik artık gerçekleşmiştir).
Kod örnekleri
Bir Radio'ya üç yerden erişebilirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir. Radio'nun değeri bool tipindedir: işaretliyse true, değilse false.
Form kodu (C#, sunucu)
Form kodunda nesneye doğrudan adıyla erişirsiniz:
// Oku
bool secili = Radio1.Value;
// Yaz (işaretle)
Radio1.Value = true;
Akış (Flow) kodu (C#, sunucu)
Akış kodunda nesneye Document1.Controls üzerinden erişirsiniz:
// Oku
bool secili = Document1.Controls["Radio1"].Value;
// Yaz (işaretle)
Document1.Controls["Radio1"].Value = true;
İstemci kodu (TypeScript, tarayıcı)
İstemci tarafında nesnelere this. ile erişilir ve özellik adları küçük harfle yazılır (value):
// Oku
const secili = this.Radio1.value;
// Yaz (işaretle)
this.Radio1.value = true;
Aynı GroupName değerine sahip Radio nesnelerinden yalnızca biri true olabilir. Birini kodla true yaptığınızda grubun diğer üyeleri otomatik olarak false olur; tek tek boşaltmanıza gerek kalmaz.
Örnek: seçime göre uyarı (OnValueChanging)
OnValueChanging seçim değişmeden hemen önce çalışır; istemediğiniz bir seçimi burada iptal edebilirsiniz. Aşağıdaki örnekte nesnenin işaretlenmesi engellenir.
İstemci (TypeScript):
async Radio1_OnValueChanging(args: Controls.EventArgs.IPropertyChangingEventArgs<boolean>) {
if (args.newValue == true) {
args.cancel = true; // Seçimi iptal eder
this.showMessage("Uyarı", "Bu seçenek şu an seçilemez.", "Validation");
}
}
Sunucu (C#):
void Radio1_OnValueChanging(object sender, PropertyChangingEventArgs<bool> e)
{
if (e.NewValue == true)
{
e.Cancel = true;
ShowMessage("Uyarı", "Bu seçenek şu an seçilemez.",
Bimser.CSP.FormControls.RuleManager.AlertType.Validation);
}
}
İpuçları
- Birbirini dışlayan seçenekleri tek grupta toplamak için tüm nesnelere aynı
GroupNamedeğerini verin. - Kullanıcının bir seçim yapmasını zorunlu kılmak için gruptaki nesnelerde
Requiredözelliğini açın. - Yalnızca tek bir açık/kapalı durumu kontrol ediyorsanız Radio yerine CheckBox kullanın.
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: GroupName, ReadOnly, Required, Tab Index
Appearance: Visible, Client Visible, Enabled, Client Enabled, Value, Label, Title
Olaylar (Client): OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged, OnClick, OnDoubleClick, OnDataLoad, OnValidating, OnValueChanging, OnValueChanged
Olaylar (Server): OnInit, OnLoad, OnRender, OnValidating, OnValueChanging, OnValueChanged