UserMetadata
Formu açan veya işlem yapan kullanıcıya ait bir bilgiyi (ad soyad, e-posta, departman, unvan gibi) otomatik olarak gösteren nesnedir. Kullanıcı el ile bir şey yazmaz; değer oturumdaki kullanıcıdan çözümlenip alana yerleşir.
Ne zaman kullanılır?
Formda "bu kaydı kim oluşturdu", "talep eden kişinin departmanı nedir" gibi bilgileri otomatik doldurmak istediğinizde kullanılır. Hangi bilginin gösterileceğini MetadataType özelliği belirler. Sabit bir metin göstermek için bunun yerine Label, serbest metin girişi için TextBox daha uygundur. Kullanıcının kimliği yerine belgenin kendi kimliğini (DM numarası, oluşturma tarihi) göstermek istiyorsanız DocumentMetadata nesnesine bakın.
Değer tipi: string (çözümlenen kullanıcı bilgisi metin olarak saklanır)
Tasarımcı özellikleri
Bir UserMetadata seçildiğinde Özellik Görüntüleyici sekmelere ayrılır.
Bu nesne MetadataControl tabanından gelir (giriş kutuları gibi MultiLanguageTextControl tabanından gelmez). Bu yüzden Placeholder, TextAlign, TabIndex gibi metin kutusu özellikleri ve ValueChanged / TextChanged gibi değişim olayları bu nesnede yoktur.
General
| Özellik | Açıklama |
|---|---|
Name | Nesnenin koddaki adı (ör. UserMetadata1). Koddan bu adla erişirsiniz. |
Field Name | Veritabanındaki alanın adı. |
Behavior
| Özellik | Açıklama |
|---|---|
MetadataType | Hangi kullanıcı bilgisinin gösterileceğini belirler (UserMetadataType numaralandırması). En önemli özelliktir. Değerler: NameAndSurname, UserId, UserName, PositionId, Position, ProfessionId, Profession, DepartmentId, Department, EmailAddress, CompanyId, Company, CompanyName, Location, Custom. |
CustomMetadataName | MetadataType Custom seçildiğinde gösterilecek özel meta veri alanının adı. |
PropertyType | Çözümlenen değerin veri tipi (UserMetadataOptionTypes). Değerler: Text, Integer, Boolean, Date, List, Float, File, Image, FromTable. |
LocationDataType | MetadataType Location olduğunda hangi konum verisinin gösterileceğini belirler (Coordinates veya Address). |
ReadOnly | Alanın salt okunur olup olmadığı. Bu nesnede salt okunur bir özelliktir; koddan değiştirilemez. |
Required | Alanı zorunlu yapar; boşsa form kaydedilmez. |
Indexable | Alanın aranabilir dizine eklenip eklenmeyeceği. |
Appearance
| Özellik | Açıklama |
|---|---|
Visible / Client Visible | Nesnenin görünürlüğü. |
Enabled / Client Enabled | Nesnenin aktif olup olmadığı. |
Title | Nesnenin başlığı (MultiLanguageText, çok dilli olabilir). |
Caption | Nesnenin yanındaki etiket bloğu (yazı, hizalama, konum). |
Size Type | Genişlik davranışı (Small / Middle / Large). |
Style / Container Style | Nesnenin ve sarmalayan hücrenin görünüm ayarları. |
Custom Class Name | Nesneye eklenecek özel CSS sınıfı. |
Text ve Value değeriValue (saklanan değer) ve Text (ekranda görünen metin) bu nesnede string tipindedir ve ikisi de koddan ayarlanabilir. Title ise MultiLanguageText'tir; çok dilli başlık için düz metin değil sözlük atanır.
Olaylar
UserMetadata değeri kullanıcıdan otomatik geldiği için bu nesnenin değer değişim olayı yoktur. Giriş kutularındaki OnValueChanging / OnValueChanged / OnTextChanging / OnTextChanged olayları MultiLanguageTextControl / EditControl tabanına aittir; UserMetadata bu tabandan türemediği için bu olaylar bu nesnede bulunmaz. Aynı şekilde OnInit / OnLoad / OnRender gibi genel yaşam döngüsü olayları da bu nesnenin kendi olay yüzeyinde tanımlı değildir.
Bu nesnenin sunduğu tek gerçek sunucu olayı doğrulama olayıdır.
Sunucu olayları (Server)
| Olay | Ne zaman çalışır |
|---|---|
OnValidating (ValidatingEvent) | Alan doğrulanırken çalışır. e.Cancel = true ile değeri geçersiz sayabilir, e.Messages listesine doğrulama mesajı ekleyebilirsiniz. |
OnValidating parametresi (ValidatingEventArgs)Cancel—trueyapılırsa değer geçersiz sayılır.Messages— kullanıcıya gösterilecekValidationMessagelistesi (Code,Message,Type).ResponseParameters— olay/eylem parametreleri.
Kod örnekleri
Bir UserMetadata nesnesine iki 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:
// Oku (değer string'tir)
string deger = UserMetadata1.Value?.ToString();
// Yaz (genelde değer otomatik gelir; elle set ederken ikisini de doldurun)
UserMetadata1.Value = "Ahmet Yılmaz";
UserMetadata1.Text = "Ahmet Yılmaz";
Akış (Flow) kodu (C#, sunucu)
Akış kodunda nesneye Document1.Controls üzerinden erişirsiniz:
// Oku
string deger = Document1.Controls["UserMetadata1"].Value?.ToString();
// Yaz
Document1.Controls["UserMetadata1"].Value = "Ahmet Yılmaz";
Document1.Controls["UserMetadata1"].Text = "Ahmet Yılmaz";
İ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.UserMetadata1.value = "";
this.UserMetadata1.text = "";
.Value saklanan değerdir, .Text ekranda görünen metindir. Çoğu durumda değer oturumdaki kullanıcıdan otomatik gelir; koddan elle set ederken ikisini de aynı yazıyla doldurmaya özen gösterin.
Örnek: değeri doğrulama (OnValidating)
UserMetadata'nın değer değişim olayı olmadığından, değeri kod ile denetlemek için doğrulama olayını (OnValidating) kullanırsınız. Aşağıdaki örnekte boş bir kullanıcı bilgisi geçersiz sayılır.
Sunucu (C#):
void UserMetadata1_OnValidating(object sender, ValidatingEventArgs e)
{
if (string.IsNullOrEmpty(UserMetadata1.Value))
{
e.Cancel = true; // Değeri geçersiz say
e.Messages.Add(new Bimser.CSP.FormControls.RuleManager.ValidationMessage
{
Message = "Kullanıcı bilgisi boş olamaz.",
Type = Bimser.CSP.FormControls.RuleManager.AlertType.Validation
});
}
}
Örnek: çözümlenen değeri başka alana taşıma (akış kodu)
UserMetadata'nın çözümlediği değeri okuyup formdaki başka bir alana yazabilirsiniz; örneğin talebi açan kişinin departmanını bir TextBox'a kopyalamak:
string departman = Document1.Controls["UserMetadata1"].Value?.ToString();
Document1.Controls["txt_Departman"].Value = departman;
Document1.Controls["txt_Departman"].Text = departman;
İpuçları
- Hangi kullanıcı bilgisinin gösterileceğini
MetadataTypeözelliğinden seçin; çoğu durumda kod yazmadan istediğiniz değeri elde edersiniz. - Standart tiplerde olmayan bir alan göstermek istiyorsanız
MetadataTypeözelliğiniCustomyapıpCustomMetadataNamealanına o alanın adını yazın. ReadOnlybu nesnede tasarımcıdan ayarlanır; koddan açıp kapatamazsınız (salt okunur özelliktir).- Konum bilgisi göstermek için
MetadataTypeLocation, ardındanLocationDataTypeileCoordinatesveyaAddressseçin. - Değeri kod ile denetlemeniz gerekiyorsa
OnValueChangingdeğilOnValidatingolayını kullanın; bu nesnenin değer değişim olayı yoktur.
Tüm tasarımcı özellikleri (tam liste)
General: Name, Field Name
Behavior: MetadataType, CustomMetadataName, PropertyType, LocationDataType, ReadOnly (salt okunur), Required, Indexable
Appearance: Visible, Client Visible, Enabled, Client Enabled, Title, Caption, Size Type, Style, Container Style, Custom Class Name, Value, Text
Olaylar (Server): OnValidating (ValidatingEvent)