Ana içeriğe geç

Onay Kutusu Listesi

Emakin'deki CheckList widget'ı, bir onay kutusu listesinden birden çok seçim yapılmasını sağlar. Liste seçenekleri çeşitli veri kaynaklarından(statik listeler veya sorgu sonuçları dahil) alınabilir.

XML Alanları

Depolanan Değerler

  • XPath seçimin kaydedileceği koleksiyonu veya değeri seçer. ItemXPath depolanan öğeleri tek tek seçer.
  • ValueXPath seçilen her öğe için yazılacak kaynak alanını seçer; CaptionXPath öğe ile birlikte depolanacak görüntüleme metnini seçer. Tekli Mod'da seçilen değerler aşağıda açıklandığı gibi tek bir veri öğesinde gösterilir.

Seçenek Kaynağı ve Sunumu

  • DataSources seçilebilir öğeleri sağlar. MonitoredXPaths değiştirildiğinde bu öğeleri yeniden yükleyen değerleri listeler.
  • Layout onay kutusu düzenini Vertical veya Horizontal düzenini seçer. RequiredForGroup eşleşen doğrulama grubu değerlendirildiğinde seçim yapılmasını zorunlu kılar. Hints kullanıcıya yardım sağlar ve Rules koşullu davranışı denetler.

Tekli Mod

CheckList iki farklı depolama modelini destekler. Varsayılan model, her seçimi ayrı bir XML öğesi olarak depolar. Tekli Mod tüm seçili değerleri, tarafından seçilen düğümün metin değerinde depolar. XPath.

Tekli Mod'u ayarlayarak etkinleştirin ItemXPath değerine !. Burada, ! bir XPath ifadesi değil, mod işaretleyicisidir. Bu nedenle, ValueXPath, CaptionXPathveri kaynağı eşlemeleri ve State özniteliği veri modeline yazmak için kullanılmaz.

Varsayılan mod Tekli Mod
XPath hedef Seçilen öğeler dizisi için bir kapsayıcı Tek bir skaler XML öğesi veya özniteliği
ItemXPath Dizideki her öğe için XPath; örneğin Item veya * !
Depolanan değer İşaretlenen her seçenek için bir XML öğesi Virgülle ayrılmış bir dize; örneğin 1,3
Başlık ve eşlemeler Her XML öğesinde depolanabilir CheckList tarafından depolanmaz veya yürütülmez
Seçim yaşam döngüsü Yeni, mevcut ve işareti kaldırılmış öğeler şu bilgileri taşıyabilir: State Dizenin tamamı değiştirilir; öğe başına durum yoktur
Şu durumda uygundur: Her seçimin meta veri, eşleme veya değişiklik izleme gerektirmesi Yalnızca seçili tanımlayıcıların kompakt biçimde kaydedilmesi gerekmesi

Veri Modeli Karşılaştırması

Aşağıdaki örneklerde kullanıcının şu öğeleri işaretlediğini varsayın: Öğe 1 ( (1) ve Öğe 3 ( (3). Data yalnızca kapsayıcı form verisi köküdür; gerçek kök öğenin adı farklı olabilir.

Varsayılan mod: seçili öğeler dizisi

Normal örnek şunları kullanır: XPath="List" ve ItemXPath="*". Bir şemada, * ifadesi, izin verilen alt öğeye çözümlenir: List dizisi. Bu alt öğenin adı Itemise ortaya çıkan veri yapısal olarak şuna eşdeğerdir:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<Data>
    <List>
        <Item State="Temp">
            <Value>1</Value>
            <Caption>Item 1</Caption>
        </Item>
        <Item State="Temp">
            <Value>3</Value>
            <Caption>Item 3</Caption>
        </Item>
    </List>
</Data>

ValueXPath ve CaptionXPath seçilen her öğeye göre değerlendirilir: Item. Yukarıdaki gibi alt öğelere veya özniteliklere işaret edebilirler. Örneğin, ValueXPath="@Value" ve CaptionXPath="@Caption" şunu üretir: <Item Value="1" Caption="Item 1" State="Temp" />.

Daha sonraki bir düzenlemede, işareti kaldırılan bir öğe veri modelinde şu değerle tutulur: State="Deleted"; daha önce depolanmış ve işaretli kalmaya devam eden bir öğede ise şu State öznitelik bulunmaz. Bu, şu öğe onu temizleyene kadar öğe başına yaşam döngüsünü korur: $Xml.CommitDeletes() Bileşen ayrıca yeni oluşturulan öğeler için veri kaynağı eşlemelerini yürütür; bu nedenle bu mod, değer ve başlığın yanı sıra ek alanları da kalıcı olarak depolayabilir.

Tekli Mod: tek bir skaler değer

Tekli Mod örneği şunları kullanır: XPath="SingleMode" ve ItemXPath="!". Aynı iki seçeneğin işaretlenmesiyle yalnızca bu tek değer oluşturulur veya güncellenir:

1
2
3
<Data>
    <SingleMode>1,3</SingleMode>
</Data>

Alt düğüm Item yoktur; başlıklar, eşlemeler veya State öznitelikler de bulunmaz. Seçim değiştiğinde CheckList metin değerinin tamamını yeniden yazar; örneğin seçim Öğe 2 olarak değiştirilirse şu sonuç oluşur: <SingleMode>2</SingleMode>. Boş seçim boş bir değer üretir.

Tekli Mod Değer Kuralları

  • Değerler benzersiz ve boş olmayan tanımlayıcılar olmalıdır. Yinelenen bir değer, aynı onay kutusu satırını işaret eder.
  • Veri kaynağı değerlerinde virgül kullanmayın: virgüller depolama ayıracıdır. Yükleme sırasında çevresindeki boşluklar yok sayılır.
  • Etiketlerin her zaman geçerli veri kaynağından alınabildiği durumlarda Tekli Mod uygundur. Geçmiş başlıklar, ek eşlenmiş alanlar veya öğe düzeyinde silme denetim kaydı gerekiyorsa varsayılan modu kullanın.

Notlar

Varsayılan Davranış

  • CheckList bileşeni seçili öğeleri depolamak için dizi türünde bir veri modeli kullanır.
  • İşaretli Öğeler: Seçilen her öğe, karşılık gelen değeri içeren yeni bir öğeyi veri modelinde oluşturur.

Veri Eşleme

  • Değer Atama:

    • Veri kaynağı öğesinin Value özelliği kullanılarak tanımlanan ValueXPath özelliği.
    • Varsayılan: Boş dize; veri kaynağı öğesinin değeri yeni öğeye atanır.
  • Etiket Atama:

    • Veri kaynağı öğesinin Text özelliği kullanılarak tanımlanan CaptionXPath özelliği.
    • Varsayılan: Boş dize; veri kaynağı öğesinin Text özelliği yeni öğenin Caption özniteliğine atanır.

State Özniteliği

CheckList bileşeni, liste öğelerindeki değişikliklerin State özniteliği kullanılarak izlenmesini destekler:

  • Temp: Yeni işaretlenen öğeleri belirtir.
  • Mevcut öğeler: Olduğu gibi korunur.
  • Deleted: İşareti kaldırılan öğeleri belirtir.

State Özniteliğini Temizleme:
Özniteliği sıfırlamak için $Xml.CommitDeletes() komut dizisi yöntemini kullanarak State özniteliği sıfırlayın.

Örnek

Veri kaynaklarını kullanan örnek bir onay kutusu listesi bileşeni şu şekilde tanımlanabilir:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<CheckList RequiredForGroup="" Layout="Vertical" XPath="List">
    <ItemXPath><![CDATA[*]]></ItemXPath>
    <ValueXPath><![CDATA[Value]]></ValueXPath>
    <CaptionXPath><![CDATA[Caption]]></CaptionXPath>
    <DataSources>
        <ListItemDataSource TextFormat="{{Text}}" ValueFormat="{{Value}}" Enabled="True">
            <Mappings/>
            <Items>
                <Item>
                    <Text Type="System.String"><![CDATA[Item 1]]></Text>
                    <Value Type="System.String"><![CDATA[1]]></Value>
                </Item>
                <Item>
                    <Text Type="System.String"><![CDATA[Item 2]]></Text>
                    <Value Type="System.String"><![CDATA[2]]></Value>
                </Item>
                <Item>
                    <Text Type="System.String"><![CDATA[Item 3]]></Text>
                    <Value Type="System.String"><![CDATA[3]]></Value>
                </Item>
            </Items>
        </ListItemDataSource>
    </DataSources>
    <MonitoredXPaths />
    <Hints><![CDATA[]]></Hints>
    <Rules />
</CheckList>

Tekli Mod Örneği

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<CheckList RequiredForGroup="" Layout="Horizontal" XPath="SingleMode">
    <Rules/>
    <ItemXPath><![CDATA[!]]></ItemXPath>
    <ValueXPath><![CDATA[]]></ValueXPath>
    <CaptionXPath><![CDATA[]]></CaptionXPath>
    <DataSources>
        <ListItemDataSource TextFormat="{{Text}}" ValueFormat="{{Value}}" Enabled="True">
            <Mappings/>
            <Items>
                <Item>
                    <Text Type="System.String"><![CDATA[Item 1]]></Text>
                    <Value Type="System.String"><![CDATA[1]]></Value>
                </Item>
                <Item>
                    <Text Type="System.String"><![CDATA[Item 2]]></Text>
                    <Value Type="System.String"><![CDATA[2]]></Value>
                </Item>
                <Item>
                    <Text Type="System.String"><![CDATA[Item 3]]></Text>
                    <Value Type="System.String"><![CDATA[3]]></Value>
                </Item>
            </Items>
        </ListItemDataSource>
    </DataSources>
    <MonitoredXPaths />
    <Hints><![CDATA[]]></Hints>
</CheckList>