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: Data Editing (množična dejanja)

DataGrid: Data Editing (množična dejanja)

1. Pregled in namen

Stanje: množična dejanja [Live]. Urejljive posamezne celice so [Live] (odsek 8, brez kode) — kategorija predstavitve DevExpress „Data Editing„ pokriva oba primera, tu namenoma ohranjena na eni strani namesto dveh skoraj praznih strani pogodbe.

Poglobi $opts['bulkActions'] iz osnovne pogodbe dataGrid(): orodno vrstico izbire za množične operacije na več označenih vrsticah.

2. Predpogoji

  • Aktivna Selection → večkratna izbira (selection => 'multi' + rowKey).
  • Končna točka strežnika, ki sprejme POST-e selection[] s preverjanjem sectok in ponovno validacijo ACL na ključ.

3. Koncepti

Izbira na strani odjemalca nikoli ni merodajna: orodna vrstica izbire je čist prikaz/udobje — vsako dejanje je treba na strani strežnika znova preveriti glede na ACL/obstoj vsakega posameznega ključa (odsek 7, varnost).

Lokalno za mrežo, ne za cel modul: orodna vrstica izbire se pojavi neposredno ob mreži, z izbiro; dejanja za cel modul spadajo v območje ukazne vrstice lupine (admin-layout → „Ukazna vrstica kot območje lupine") — oboje je namenoma ločeno.

4. Prvi koraki

echo $widgets->dataGrid($columns, $rows, [
    'selection'   => 'multi',
    'rowKey'      => 'id',
    'bulkActions' => [
        ['label' => 'Dodeli skupino', 'element' =>
            '<button type="submit" name="do" value="assign-group" class="wk-btn">Dodeli skupino</button>'],
    ],
]);

Napačno: slepo zaupati obravnavalcu POST, da vsaka vrednost selection[] pripada ACL trenutno prijavljenega uporabnika. Spremenjen POST lahko vsebuje poljubne vrednosti rowKey (CWE-639, pokvarjen nadzor dostopa) — vsak ključ je treba na strani strežnika znova preveriti glede na dovoljenje uporabnika, ne le glede na obstoj.

5. Uporaba

Vrsta dejanja Barva (pogodba v3) Primer
navadno množično dejanje belo „Dodeli skupino“
posebno dejanje modro „Izvoz CSV izbire„
destruktivno množično dejanje rdeče, zahteva pogovorno okno za potrditev „Deaktiviraj dostop“

6. Referenca API: bulkActions

echo $widgets->dataGrid($columns, $rows, [
    'selection'   => 'multi',
    'rowKey'      => 'id',
    'bulkActions' => [
        ['label' => 'Deaktiviraj dostop', 'element' =>
            '<button type="submit" name="do" value="deactivate" class="wk-btn wk-btn--danger">Deaktiviraj dostop</button>'],
        ['label' => 'Dodeli skupino', 'element' =>
            '<button type="submit" name="do" value="assign-group" class="wk-btn">Dodeli skupino</button>'],
        ['label' => 'Izvoz CSV izbire', 'element' =>
            '<button type="submit" name="do" value="export-csv" class="wk-btn wk-btn--accent">Izvoz CSV izbire</button>'],
    ],
]);

Z nastavljenim 'bulkActions' => [...] mreža izriše orodno vrstico izbire (.wk-datagrid__bulkbar, interno klic toolbar()) nad telesom mreže: levo števec „n izbranih„ plus „počisti izbiro“, desno gumbi dejanj.

7. Parametri, opcije in stanja

Ključ Tip Pomen
$opts['bulkActions'] polje, shema elementov toolbar() izriše orodno vrstico izbire; učinkovito le pri selection => 'multi'

Stanja: brez izbire je vrstica skrita (brez JS: vedno vidna, gumbi delujejo na označena potrditvena polja).

Varnost:

  • Destruktivna množična dejanja pred izvedbo odprejo pogovorno okno za potrditev (modal()), ki navede število in vzorec prizadetih vnosov („Deaktivirati 17 uporabniških dostopov?„); „prekliči“ nosi privzeti fokus.
  • Stran strežnika: vsako množično dejanje je navaden POST obrazca ključev selection[] s preverjanjem sectok (oz. ista končna točka prek vzorca ajax.php); strežnik ponovno preveri vsak ključ glede na ACL/obstoj in odgovori s povzetkom rezultata („17 deaktiviranih, 2 preskočena: …„) kot vrstico stanja nad mrežo.

Obnašanje ob napaki: bulkActions nastavljen, vendar selection !== 'multi' → orodna vrstica izbire se ne izriše, brez napake.

8. Popolni primeri: urejanje mreže (urejljive celice)

dataGrid() izriše izključno prikazovalne celice — brez urejanja v vrstici, brez celic urejevalnika, brez razveljavitve/ponovitve. To je namerna arhitekturna odločitev (ločena odgovornost med prikazom in urejanjem), ne spregled:

  • Urejljive tabele zagotavlja samostojen declarativeTable() (widgets → osnovni katalog gradnikov): nativna polja obrazca po celici ({name}[{i}][{key}]), pošlje kot eno polje brez JavaScripta — ni temelječ na dataGrid().
  • Obstoječ živ primer istega videza vsebnika: zavihki Table Designerja v wksqliteds — ročno zgrajene tabele, ki videz tabele podedujejo prek strukture vsebnika.
  • Referenca za podrobnosti obnašanja: DevExpress ExpressQuantumGrid/XtraGrid „In-place Editing“.

9. Omejitve in robni primeri

  • Brez razveljavitve/ponovitve za množična dejanja — vsako dejanje je takoj učinkovito (po potrditvi pri destruktivnih dejanjih).
  • Brez kazalnika napredka za dolgotrajna množična dejanja — klicatelj mora sam odločiti, ali dejanje teče sinhrono (POST obrazca + ponovno nalaganje) ali asinhrono (AJAX + kazalnik napredka).

10. Dostopnost in združljivost

  • Popoln pregled: accessibility (konsolidirano, tu ni podvojeno).
  • Brez JavaScripta orodna vrstica izbire ostane trajno vidna (namesto le pri aktivni izbiri) — funkcionalno enako, le brez pojemanja števca.

11. Odpravljanje težav

Simptom: orodna vrstica izbire se ne pojavi kljub nastavljenemu bulkActions.

Vzrok: $opts['selection'] ni multibulkActions učinkuje le pri večkratni izbiri.

Rešitev: nastavite selection => 'multi' in rowKey (glej selection).

12. Sorodne teme

sl/wiki/dwe/wkfluentui/component/datagrid/bulk-actions.txt · Zadnja sprememba: uporabnika 0.0.0.0