Skip to main content

Rate

Kullanıcının yıldızlara tıklayarak puan vermesini sağlayan nesnedir. Memnuniyet, kalite ya da öncelik gibi değerlerin sayısal bir puanla toplanması için kullanılır.

Değer tipi: decimal?

Ne zaman kullanılır?

Bir konunun puanlanması gereken yerlerde idealdir: anket memnuniyeti, ürün değerlendirmesi, önceliklendirme. Kullanıcıya hazır seçenekler arasından seçim yaptırmak istiyorsanız ComboBox, evet/hayır gibi tek bir tercih için CheckBox daha uygundur.

Tasarımcı özellikleri

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

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. Rate1). 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.

Data Source

Her yıldızın üzerine gelindiğinde gösterilecek ipuçlarını besler.

ÖzellikAçıklama
ItemsYıldızlara karşılık gelen metinlerin listesi (List<String>). Örneğin "Çok kötü", "Kötü", "Orta", "İyi", "Mükemmel".

Behavior

ÖzellikAçıklama
CountKaç yıldız gösterileceği. Varsayılan genelde 5.
AllowHalfYarım yıldız (ör. 3.5) verilmesine izin verir.
AllowClearAynı yıldıza tekrar tıklayınca puanın sıfırlanmasına izin verir.
ReadOnlyAlanı salt okunur yapar; puan değiştirilemez.
RequiredAlanı zorunlu yapar; puan verilmezse form kaydedilmez.
Tab IndexTab tuşuyla geçiş sırasını belirler.
TooltipsHer yıldız için ayrı ipucu metinleri (çok dilli).

Appearance

ÖzellikAçıklama
Visible / Client VisibleNesnenin görünürlüğü.
Enabled / Client EnabledNesnenin aktif olup olmadığı.
TitleNesnenin başlık / ipucu metni (çok dilli).
PlaceholderAlan boşken görünen soluk ipucu yazısı.
Text Alignİçeriğin hizası.

Olaylar

Bir nesne açılırken olaylar belirli bir sırayla tetiklenir; kullanıcı yıldıza tıklayınca da 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ı puan verince: OnValueChangingOnValueChanged

Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda. Rate'in 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.
OnValueChangingPuan değişmeden hemen önce (iptal edilebilir).
OnValueChangedKullanıcı puanı verip değer kesinleştiğinde. En sık kullanılan olaydır.
OnTextChanging / OnTextChangedGörünen metin değişmeden önce / sonra.
OnValidatingForm kaydedilirken değer doğrulanırken.

İ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 olayının parametresi (args TS, e C#) şunları taşır:

  • newValue / NewValue — verilmek istenen yeni puan
  • oldValue / OldValue — önceki puan
  • 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 Rate'e üç yerden erişebilirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir. Değer decimal? tipindedir, yani puan verilmemişse null olabilir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişirsiniz:

// Oku
decimal? puan = Rate1.Value;

// Yaz
Rate1.Value = 4;

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

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

// Oku
decimal? puan = Document1.Controls["Rate1"].Value;

// Yaz
Document1.Controls["Rate1"].Value = 4;

İstemci kodu (TypeScript, tarayıcı)

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

this.Rate1.value = 4;
Puan verilmemiş olabilir

Value tipi decimal? olduğu için kullanıcı hiç puan vermediyse değer null gelir. Hesap yapmadan önce if (Rate1.Value != null) ile kontrol edin, yoksa hata alırsınız.

Örnek: düşük puanda uyarı (OnValueChanging)

OnValueChanging puan değişmeden hemen önce çalışır; istemediğiniz bir değeri burada iptal edebilirsiniz. Aşağıdaki örnekte 2'nin altındaki puanlar için kullanıcı uyarılır.

İstemci (TypeScript):

async Rate1_OnValueChanging(args: Controls.EventArgs.IPropertyChangingEventArgs<number>) {
if (args.newValue < 2) {
this.showMessage("Uyarı", "Düşük puan verdiniz, lütfen sebebini açıklayın.", "Validation");
}
}

Sunucu (C#):

void Rate1_OnValueChanging(object sender, PropertyChangingEventArgs<decimal?> e)
{
if (e.NewValue < 2)
{
ShowMessage("Uyarı", "Düşük puan verdiniz, lütfen sebebini açıklayın.",
Bimser.CSP.FormControls.RuleManager.AlertType.Validation);
}
}

İpuçları

  • Yarım yıldız puanları (ör. 4.5) toplamak istiyorsanız AllowHalf özelliğini açın; değer tipi zaten decimal? olduğu için ondalık puanı saklayabilir.
  • Her yıldızın ne anlama geldiğini kullanıcıya göstermek için Tooltips ya da Items ile metin verin (ör. 1 = "Çok kötü", 5 = "Mükemmel").
  • Puanın zorunlu olmasını istiyorsanız Required özelliğini açın; böylece kod ile boş kontrolü yapmanıza gerek kalmaz.
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

Data Source: Items

Behavior: Count, AllowHalf, AllowClear, ReadOnly, Required, Tab Index, Tooltips

Appearance: Visible, Client Visible, Enabled, Client Enabled, Title, Value, Placeholder, Text, Text Align

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