Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » FluentUI (knjižnica oblikovalskega sistema) » FluentUI: reference komponent » FluentUI: namizni DataGrid — predstavitveni pregled » DataGrid: selection

DataGrid: selection

1. Pregled in namen

Stanje: [Live]. Reference: Fluent UI DetailsList (SelectionMode.multiple), vzorec množičnega urejanja zaostanka Azure DevOps (orodna vrstica izbire), izbira s potrditvenimi polji v mreži DevExpress, seznami VS Code (model Ctrl/Shift).

Poglobi del selection/rowKey iz osnovne pogodbe dataGrid(): enojno in večkratno izbiro vrstic, upravljanje z miško/tipkovnico, API JS za porabnike.

2. Predpogoji

  • Pri multi: vsaka vrstica potrebuje vrednost stolpca, ki jo enolično opredeli (za rowKey).

3. Koncepti

Stanje izbire je lokalno za pogled: sprememba filtra, razvrščanja ali strani izbriše izbiro (namenoma — brez nevidno vztrajajoče izbire med pogledi).

Aktivna vrstica ≠ izbira: kot v Fluent UI DetailsList sta kazalec fokusa (roving tabindex) in izbira (aria-selected) ločena koncepta — puščice premikajo fokus, preslednica/klik spremeni izbiro.

4. Prvi koraki

echo $widgets->dataGrid($columns, $rows, [
    'selection' => 'single',
]);

Napačno: usmeriti rowKey na stolpec, katerega vrednost ni edinstvena (npr. status). Več vrstic bi tedaj poslalo enako vrednost selection[] — strežnik jih na strani strežnika ne more razlikovati.

5. Uporaba

Primer uporabe Vzorec
Podroben pogled aktivne vrstice (auxbar, podokno lastnosti) selection => 'single' + dogodek wk-selectionchange
Množična dejanja na več vrsticah selection => 'multi' + rowKey + bulkActions
Pilotni porabnik zaslon Browse wksqliteds — prek wk-selectionchange napaja ponovno nalaganje auxbarja v živo

6. Referenca API

$opts['selection'] Obnašanje
none (privzeto) brez uporabniškega vmesnika za izbiro
single ena aktivna vrstica; 'selectable' => true ostane veljaven kot vzdevek
multi stolpec s potrditvenimi polji + orodna vrstica izbire; zahteva $opts['rowKey']
echo $widgets->dataGrid($columns, $rows, [
    'selection' => 'multi',
    'rowKey'    => 'id',
]);

7. Parametri, opcije in stanja

Ključ Tip Pomen
$opts['selection'] 'none'|'single'|'multi' model izbire, glej odsek 6
$opts['selectable'] bool vzdevek za selection => 'single'
$opts['rowKey'] string ključ stolpca, ki enolično opredeli vrstico — obvezno pri multi

Enojna izbira

Klik/puščice označijo aktivno vrstico (aria-selected, --wk-admin-row-selected-bg); Ctrl+C jo kopira (zmaga data-wk-copy vrstice, sicer besedilo celic, povezano s tabulatorji — glej Data Export).

Večkratna izbira

  • Stolpec s potrditvenimi polji: prvi stolpec s pravimi celicami <input type="checkbox" name="selection[]" value="<rowKey>"> plus potrditveno polje v glavi („izberi/prekliči vse vidne vrstice„, nedoločeno pri delni izbiri). Potrditvena polja so znotraj obdajajočega <form>s tem izbira deluje popolnoma brez JavaScripta (POST obrazca selection[]).
  • Miška: klik na potrditveno polje ga preklopi; Ctrl+klik na vrstico ga prav tako preklopi; Shift+klik izbere obseg od nazadnje aktivne do kliknjene vrstice.
  • Tipkovnica: puščice premikajo aktivno vrstico, preslednica jo preklopi, Shift+puščica razširi obseg, Ctrl+A izbere vse vidne vrstice, Ctrl+C kopira vse izbrane vrstice (vrstico za vrstico; zmaga lastni atribut data-wk-copy vsake vrstice — glej Data Export). Vsebnik nosi aria-multiselectable=„true“, vrstice nosijo aria-selected.

API izbire (JavaScript)

  • wkDataGrid.getSelection(gridEl) → polje vrednosti rowKey trenutno izbranih vrstic.
  • Ob vsaki spremembi mreža sproži mehurčkajoč CustomEvent wk-selectionchange z detail = { keys: string[], count: number }.
document.querySelector('.wk-datagrid').addEventListener('wk-selectionchange', (ev) => {
    console.log(ev.detail.count, 'vrstic izbranih:', ev.detail.keys);
});

Obnašanje ob napaki

Pogoj Obnašanje
selection => 'multi' brez rowKey tiho degradira na none — brez napake
rowKey kaže na needinstven stolpec gradnik ne preveri — več vrstic pošlje enako vrednost, strežnik mora to zaznati (glej odsek 4, „napačno“)

8. Popolni primeri

echo $widgets->dataGrid($columns, $rows, [
    'selection' => 'multi',
    'rowKey'    => 'id',
]);

9. Omejitve in robni primeri

  • Izbira velja na pogled: sprememba filtra, razvrščanja ali strani jo izbriše (namenoma, glej odsek 3).
  • Brez „pomnjenja izbire med stranmi„ — vsak nov pogled se začne s prazno izbiro.

10. Dostopnost in združljivost

  • Popoln pregled: accessibility (konsolidirano, tu ni podvojeno).
  • Brez JavaScripta multi ostane povsem uporaben (POST obrazca); single za označevanje s klikom zahteva JavaScript, nativna navigacija s tabulatorjem pa je vedno ohranjena.

11. Odpravljanje težav

Simptom: stolpec s potrditvenimi polji manjka kljub selection => 'multi'.

Vzrok: rowKey manjka v $opts — gradnik tiho degradira na none.

Rešitev: nastavite $opts['rowKey'] na edinstven ključ stolpca.

12. Sorodne teme

sl/wiki/dwe/wkfluentui/component/datagrid/selection.txt · Zadnja sprememba: uporabnika 0.0.0.0