Skip to main content

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

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

Behavior

ÖzellikAçıklama
MetadataTypeHangi 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.
CustomMetadataNameMetadataType 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.
LocationDataTypeMetadataType Location olduğunda hangi konum verisinin gösterileceğini belirler (Coordinates veya Address).
ReadOnlyAlanın salt okunur olup olmadığı. Bu nesnede salt okunur bir özelliktir; koddan değiştirilemez.
RequiredAlanı zorunlu yapar; boşsa form kaydedilmez.
IndexableAlanın aranabilir dizine eklenip eklenmeyeceği.

Appearance

ÖzellikAçıklama
Visible / Client VisibleNesnenin görünürlüğü.
Enabled / Client EnabledNesnenin aktif olup olmadığı.
TitleNesnenin başlığı (MultiLanguageText, çok dilli olabilir).
CaptionNesnenin yanındaki etiket bloğu (yazı, hizalama, konum).
Size TypeGenişlik davranışı (Small / Middle / Large).
Style / Container StyleNesnenin ve sarmalayan hücrenin görünüm ayarları.
Custom Class NameNesneye eklenecek özel CSS sınıfı.
note
Bu nesnenin Text ve Value değeri

Value (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)

OlayNe 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.
note
OnValidating parametresi (ValidatingEventArgs)
  • Canceltrue yapılırsa değer geçersiz sayılır.
  • Messages — kullanıcıya gösterilecek ValidationMessage listesi (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 mi .Text mi?

.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ğini Custom yapıp CustomMetadataName alanına o alanın adını yazın.
  • ReadOnly bu nesnede tasarımcıdan ayarlanır; koddan açıp kapatamazsınız (salt okunur özelliktir).
  • Konum bilgisi göstermek için MetadataType Location, ardından LocationDataType ile Coordinates veya Address seçin.
  • Değeri kod ile denetlemeniz gerekiyorsa OnValueChanging değil OnValidating olayı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)