Ana içeriğe geç

Onay Listesi

Emakin'deki CheckList widget'ı, bir onay kutusu listesinden birden fazla seçim yapılmasına olanak tanır. Liste seçenekleri, statik listeler veya sorgu sonuçları da dahil olmak üzere çeşitli veri kaynaklarındansağlanabilir.

XML Alanları

Saklanan Değerler

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

Seçenek Kaynağı ve Sunumu

  • DataSources seçilebilir öğeleri sağlar. MonitoredXPaths değiştirildiğinde öğeleri yeniden yükleyen değerleri listeler.
  • Layout seçim düzenini belirler: Vertical veya Horizontal onay kutusu düzenini. 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 saklar. Tekli Mod seçilen tüm değerleri, tarafından belirlenen düğümün metin değeri içinde saklar XPath.

Tekli Mod'u etkinleştirmek için ItemXPath olarak ayarlayın !. Burada ! bir XPath ifadesi değil, mod işaretçisidir. Bu nedenle ValueXPath, CaptionXPath, veri 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 öznitelik
ItemXPath Dizideki her öğe için XPath; örneğin Item veya * !
Saklanan değer Seçili 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 saklanabilir CheckList tarafından saklanmaz veya yürütülmez
Seçim yaşam döngüsü Yeni, mevcut ve seçimi kaldırılmış öğeler şu değeri taşıyabilir: State Dizenin tamamı değiştirilir; öğe başına durum tutulmaz
Şu durumlarda uygundur: Her seçim için meta veri, eşleme veya değişiklik takibi gerekiyorsa Yalnızca seçilen tanımlayıcıların kompakt biçimde saklanması gerekiyorsa

Veri Modeli Karşılaştırması

Aşağıdaki örneklerde kullanıcının 1. Öğeyi (1) ve 3. Öğeyi (3). Data seçtiğini varsayın. Bu yalnızca form verilerini çevreleyen kök düğümdür; gerçek kök öğenin adı farklı olabilir.

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

Standart örnekte XPath="List" ve ItemXPath="*"kullanılır. Şemada, * öğesi, izin verilen alt öğe olarak çözümlenir: List dizisinin. Bu alt öğenin adı Itemise ortaya çıkan verinin yapısal karşılığı şöyledir:

 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 Itemöğeye göre değerlendirilir. 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, seçimi kaldırılan öğe veri modelinde şu değerle tutulur: State="Deleted"; daha önce saklanmış ve seçili kalmaya devam eden öğede ise State özniteliği bulunmaz. Bu, öğe başına yaşam döngüsünü şu değer temizleyene kadar korur: $Xml.CommitDeletes() . Widget ayrıca yeni oluşturulan öğeler için veri kaynağı eşlemelerini yürütür; dolayısıyla bu mod, değer ve başlığın yanı sıra ek alanları da saklayabilir.

Tekli Mod: tek bir skaler değer

Tekli Mod örneğinde XPath="SingleMode" ve ItemXPath="!"kullanılır. Aynı iki seçenek seçildiğinde yalnızca şu tek değer oluşturulur veya güncellenir:

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

Alt Item düğümler, başlıklar, eşlemeler veya State öznitelikleri yoktur. Seçim değiştiğinde CheckList metin değerinin tamamını yeniden yazar; örneğin, seçim 2. Öğe olarak değiştirildiğinde <SingleMode>2</SingleMode>elde edilir. Hiçbir seçenek seçilmediğinde değer boş olur.

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ı hedefler.
  • Veri kaynağı değerlerinde virgül kullanmayın: virgül, depolama ayırıcısıdır. Yükleme sırasında baştaki ve sondaki boşluklar yok sayılır.
  • Etiketler her zaman geçerli veri kaynağından alınabiliyorsa 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.

Açıklamalar

Varsayılan Davranış

  • CheckList widget'ı seçili öğeleri saklamak için dizi türünde bir veri modeli kullanır.
  • Seçili Öğeler: Seçilen her öğe, karşılık gelen değeriyle birlikte veri modelinde yeni bir öğe oluşturur.

Veri Eşleme

  • Değer Atama:

    • Veri kaynağı öğesinin Value özelliği kullanılarak ValueXPath özelliği tarafından tanımlanır.
    • Varsayılan: Boş dize; veri kaynağı öğesinin değerini yeni öğeye atar.
  • Etiket Atama:

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

Durum Özniteliği

CheckList widget'ı, liste öğelerindeki değişiklikleri şu özniteliği kullanarak izlemeyi destekler: State özniteliği:

  • Temp: Yeni seçilen öğeleri işaretler.
  • Mevcut Öğeler: Olduğu gibi korunur.
  • Deleted: Seçimi kaldırılan öğeleri işaretler.

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

Örnek

Veri kaynaklarını kullanan örnek bir onay listesi widget'ı aşağıdaki gibi 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>