Skip to main content

Card

Bir veri kaynağındaki kayıtları kart (kutucuk) biçiminde listeleyen görsel nesnedir. Her kayıt için bir başlık ve bir veya birkaç değer satırı içeren kart üretir.

Değer tipi: Bu nesnenin tek bir skaler değeri yoktur; veri taşıyıcısı kart listesidir. İçeriği bir veri kaynağından beslenebileceği gibi koddan Items (List<CardItem>) ya da Data (List<Dictionary<String, Object>>) özelliklerine atanarak da oluşturulabilir.

Ne zaman kullanılır?

Az sayıda kaydı sade ve okunur bir kutucuk düzeninde göstermek istediğinizde kullanın: özet bilgi panoları, son işlemler, kısa kayıt listeleri. Çok sütunlu ve filtrelenebilir tablolar için Grid, tek bir kaydın alanlarını düzenli göstermek için Panel daha uygundur.

Tasarımcı özellikleri

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

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. Card1). Koddan bu adla erişirsiniz.
ControlIdNesnenin dahili kimliği.

Data Source

Kartların hangi kayıtlardan üretileceğini ve her kartta hangi alanların görüneceğini belirler.

ÖzellikAçıklama
Data SourceKartların besleneceği veri kaynağı (ör. bir .mssqlds sorgusu).
Data Source TypeVeri kaynağının tipi: Dynamic, Static, Relation, Action, Fields.
DataKartların doğrudan koddan beslendiği kayıt listesi (List<Dictionary<String, Object>>).
ItemsKart öğelerinin listesi (List<CardItem>); her öğe bir kartı temsil eder.

Behavior

ÖzellikAçıklama
Title ExprHer kartın başlığını üreten ifade (TitleExpr, hangi alanın başlık olacağı).
Value ExprsKartta başlığın altında gösterilecek değer satırlarını üreten ifadeler (ValueExprs, String[]).
Wrapper DirectionKartların dizilme yönü. WrapperDirection enum'u: Horizontal (yan yana) veya Vertical (alt alta).

Appearance

ÖzellikAçıklama
TitleNesnenin başlığı (MultiLanguageText, çok dilli olabilir).
CaptionNesnenin etiketi (ControlCaption).
Style / Container StyleNesnenin ve kapsayıcısının stil ayarları (Style).
Custom Class NameNesneye eklenecek özel CSS sınıf adı (CustomClassName).
Visible / Client VisibleNesnenin görünürlüğü. Client Visible yalnızca tarayıcı tarafında etkilidir.
Enabled / Client EnabledNesnenin aktif olup olmadığı. Client Enabled yalnızca tarayıcı tarafında etkilidir.
Default Enabled / Default Client EnabledEnabled / Client Enabled için başlangıç değerleri.
LoadingNesnenin yüklenme (bekleme) durumunu gösterir (Boolean).

Context Menu

Kartlara sağ tık menüsü bağlamak için kullanılır.

ÖzellikAçıklama
Context Menu KeyBağlanacak içerik menüsünün anahtarı (ContextMenuKey).
Context Menu Column KeyMenünün bağlanacağı sütun anahtarı (ContextMenuColumnKey).
Context Menu TargetMenünün hangi hedefe çıkacağı. ContextMenuTarget enum'u: Container, None, Row, Column.

CardItem ve CardValue yapısı

Kartları koddan üretmek için Items listesine CardItem nesneleri eklenir. Her CardItem bir kartı, içindeki her CardValue ise o karttaki bir değer satırını temsil eder.

Bimser.CSP.FormControls.Controls.CardControl.CardItem

ÜyeTipAçıklama
KeyStringKartın anahtarı (kaydı ayırt eden değer).
TitleStringKartın başlık satırı.
ValuesList<CardValue>Kartta gösterilecek değer satırları.

Bimser.CSP.FormControls.Controls.CardControl.CardValue

ÜyeTipAçıklama
CaptionStringDeğer satırının etiketi.
ValueStringDeğer satırının içeriği.

Yardımcı metotlar

Card, VisualControl nesnesinden şu yardımcı metotları devralır:

MetotNe yapar
Show() / Hide()Nesneyi gösterir / gizler.
ShowLoading() / HideLoading()Yüklenme göstergesini açar / kapatır.
ToggleLoading()Yüklenme göstergesini tersine çevirir.
ScrollTo()Sayfayı nesnenin görünür olacağı yere kaydırır.
FireClick()Nesnenin tıklama olayını programatik olarak tetikler.

Olaylar

Card, VisualControl (ve onun atası BaseControl) üzerinden gelen genel yaşam döngüsü ve fare olaylarına sahiptir. Bunların tümü sunucu tarafında C# olarak çalışan ortak temel olaylardır; istemci için ayrı bir olay kümesi yoktur.

Card'ın kendine özel olayı yoktur

Card DataBoundControl değil, doğrudan VisualControl nesnesinden türer. Bu nedenle veriye özel OnDataLoad olayı yoktur (bu olay yalnızca DataBoundControl ve türevlerinde bulunur). Card için tasarımcı panelinde de özel bir olay listelenmez; aşağıdakiler temel sınıflardan gelen ortak yaşam döngüsü olaylarıdır.

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

Olaylar (Server, C#)

OlayİmzaNe zaman çalışır
OnInit(Object sender, InitEventArgs e)Form açılırken nesne oluşturulduğunda, en başta.
OnLoad(Object sender, LoadEventArgs e)OnInit'in hemen ardından, nesne yüklenince.
OnPreRender(Object sender, PreRenderEventArgs e)Nesne ekrana çizilmeden hemen önce.
OnRender(Object sender, RenderEventArgs e)Nesne ekrana çizilirken.
OnPropertyChanging(Object sender, PropertyChangingEventArgs<Object> e)Bir özellik kodla değiştirilmeden hemen önce.
OnPropertyChanged(Object sender, PropertyChangedEventArgs<Object> e)Bir özellik kodla değiştirildikten hemen sonra.
OnClick(Object sender, MouseEventArgs e)Nesneye tıklanınca (VisualControl).
OnDoubleClick(Object sender, MouseEventArgs e)Nesneye çift tıklanınca (VisualControl).

Kod örnekleri

Card'ın asıl API yüzeyi verisidir; en değerli kullanım, kartları koddan üretmektir. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.

Kartları koddan üretme (Form kodu, C#, sunucu)

Items listesine CardItem ekleyerek kartları döngüyle oluşturabilirsiniz:

using Bimser.CSP.FormControls.Controls.CardControl;

var kartlar = new List<CardItem>();

foreach (var kayit in kayitlar)
{
var kart = new CardItem
{
Key = kayit.Id.ToString(),
Title = kayit.Ad,
Values = new List<CardValue>
{
new CardValue { Caption = "Departman", Value = kayit.Departman },
new CardValue { Caption = "Tutar", Value = kayit.Tutar.ToString("N2") }
}
};
kartlar.Add(kart);
}

Card1.Items = kartlar;

Alternatif olarak Data özelliğine satır sözlükleri atanabilir; bu durumda hangi alanın başlık, hangilerinin değer satırı olacağını Title Expr ve Value Exprs belirler:

Card1.Data = new List<Dictionary<string, object>>
{
new Dictionary<string, object> { ["Ad"] = "Ahmet Yılmaz", ["Departman"] = "Satınalma" },
new Dictionary<string, object> { ["Ad"] = "Ayşe Demir", ["Departman"] = "Finans" }
};

Görünürlük, aktiflik ve yüklenme (Form kodu, C#, sunucu)

// Görünürlük ve aktiflik
Card1.Visible = true;
Card1.Enabled = false;

// Yüklenme göstergesi (uzun süren veri çekme sırasında)
Card1.ShowLoading();
// ... veriyi hazırla ...
Card1.Items = kartlar;
Card1.HideLoading();

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

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

// Görünürlük ve aktiflik
Document1.Controls["Card1"].Visible = true;
Document1.Controls["Card1"].Enabled = false;

İstemci kodu (TypeScript, tarayıcı)

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

this.Card1.visible = true;
this.Card1.enabled = false;
Veri kaynağı mı, kod mu?

Kart içeriğini tasarım anında Data Source + Title Expr / Value Exprs ile kurmak çoğu durumda en sade yoldur. Ancak kartları koddan üretmek de tam olarak desteklenir: Items (List<CardItem>) ve Data (List<Dictionary<String, Object>>) yazılabilir özelliklerdir. Sabit, sorguya dayanan listeler için veri kaynağını; koşullu ya da hesaplanarak oluşan listeler için koddan beslemeyi tercih edin.

İpuçları

  • Card görsel bir listeleme nesnesidir; tek bir skaler değeri olmadığı için Required gibi doğrulama özellikleri yoktur. Doğrulamayı, kartı besleyen kayıtların geldiği alanlarda yapın.
  • Kartların yan yana mı yoksa alt alta mı dizileceğini Wrapper Direction (Horizontal / Vertical) ile ayarlarsınız.
  • Uzun süren veri çekme işlemlerinde ShowLoading() / HideLoading() ile kullanıcıya bekleme göstergesi sunun.
  • Kartlara sağ tık menüsü bağlamak için Context Menu Key ile menüyü, Context Menu Target ile hedefi (Container / Row / Column) ayarlayın.
  • Çok sayıda kayıt ve filtreleme gerektiğinde Card yerine bir tablo (Grid) nesnesi tercih edin.
Tüm tasarımcı özellikleri (tam liste)

General: Name, ControlId

Data Source: Data, Data Source, Data Source Type, Items

Behavior: Title Expr (TitleExpr), Value Exprs (ValueExprs), Wrapper Direction (WrapperDirection: Horizontal, Vertical)

Appearance: Title, Caption, Style, Container Style, Custom Class Name, Visible, Client Visible, Enabled, Client Enabled, Default Enabled, Default Client Enabled, Loading

Context Menu: Context Menu Key, Context Menu Column Key, Context Menu Target (ContextMenuTarget: Container, None, Row, Column)

Metotlar: Show, Hide, ShowLoading, HideLoading, ToggleLoading, ScrollTo, FireClick

Olaylar (Server, C#): OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged, OnClick, OnDoubleClick