Dokumentacja
Kluczowe właściwości i metody
Składniki, po które sięgasz najczęściej.
Adapter
TsgcHTMLCRUDAdapter to ścieżka zapisu, z sześcioma metodami wirtualnymi: Locate, Read, List, Insert, Update i Delete. TsgcHTMLCRUDAdapter_DataSet obsługuje powiązany zestaw danych, a SetAdapter przekazuje komponentowi Twój własny adapter i przejmuje go na własność. List zwraca jedną stronę jako linie rozdzielone tabulatorami, z kluczem w ostatniej komórce, oraz liczbę wierszy całego zbioru.
W .NET
W .NET nie ma TDataSet, dlatego port zawiera trzy adaptery: TsgcHTMLCRUDAdapter_DataTable nad DataTable, TsgcHTMLCRUDAdapter_List<T> nad dowolnym IList<T> oraz TsgcHTMLCRUDAdapter_DbConnection nad tabelą za DbConnection, przy czym każda wartość jest wysyłana jako parametr. Zadeklaruj Columns: nie są odczytywane z tabeli.
Strona
ShowList(search, page), ShowNew, ShowEdit(key), Save(key, values, html) i DeleteRecord(key, html) zwracają każda znaczniki, które host wstawia do strony. ProcessAction kieruje do nich odesłane akcje crudList, crudNew, crudEdit, crudSave i crudDelete, a dla każdej innej akcji zwraca False, dzięki czemu jedna strona może zawierać kilka komponentów.
Opcje strony
Actions to zbiór caCreate, caEdit, caDelete, caView i caExport, a strona z samym caView jest raportem. EditMode to cemModal lub cemPage, ConfirmDelete pyta przed usunięciem, PageSize domyślnie wynosi 25 i nigdy nie przekracza 500, a SearchFields wymienia pola, w których szuka pole wyszukiwania, oddzielone średnikami.
Kolumny
TsgcHTMLCRUDColumn ma FieldName, Caption, Visible, ReadOnly, Required, InList, InForm, Width i MaxLength. Gdy żadna nie jest zadeklarowana, komponent odczytuje je z aktywnego zestawu danych: podpis z DisplayLabel, flagę wymagalności i długość, a klucz jest pokazywany, ale nigdy edytowany. LoadColumnsFromDataSet robi to na żądanie.
Walidacja
Najpierw odrzucana jest pusta kolumna wymagana oraz wartość dłuższa niż MaxLength. Następnie wywoływane jest OnValidate: dodaj do aErrors jedną linię na każdy problem, a nic nie zostanie zapisane, formularz wróci z komunikatami. OnApplyUpdates uruchamia się przed adapterem, a ustawienie aHandled oznacza, że zapis wykonujesz Ty. OnApplied jest wywoływane po udanym zapisie, aby go zalogować lub odświeżyć widok każdemu, kto ogląda listę.
Blokowanie optymistyczne
Podaj pole wersji w VersionField. Zapis porównuje to, co wysyła przeglądarka, z tym, co jest zapisane, i odrzuca zapis, gdy w międzyczasie ktoś inny zmienił rekord, dzięki czemu druga osoba, która naciśnie przycisk zapisu, nie nadpisze zmian pierwszej.
Rekord nadrzędny i podrzędne
Details przechowuje listy podrzędne rekordu. Każda pozycja wskazuje inny TsgcHTMLComponent_CRUD w CRUD, pole rekordu podrzędnego, które przechowuje klucz nadrzędny, w MasterField, oraz Caption. Są renderowane pod formularzem podczas edycji rekordu. SetMaster(field, value) zawęża listę do jednego rekordu nadrzędnego.
Eksport CSV
Z caExport pasek narzędzi pokazuje link eksportu do RoutePath('export.csv'). Obsłuż tę trasę przez GetExportCSV(search): eksportuje ona wyszukiwanie, które pokazuje lista, do 500 wierszy, a nie całą tabelę. Każda wartość jest ujęta w cudzysłów, więc przecinek ani podział wiersza nie zepsują pliku.
Klucz jest najpierw lokalizowany
Każdy klucz przychodzi z przeglądarki. ShowEdit, Save i DeleteRecord wywołują na adapterze Locate dla tego klucza, zanim cokolwiek zostanie edytowane lub usunięte, więc zmiana numeru w adresie URL nigdy nie dotrze do innego rekordu. Actions też jest wymuszane: strona bez caDelete odrzuca usunięcie, nawet gdy fałszywy formularz je wyśle. Komórki i pola są escapowane, więc rekord zawierający znaczniki jest pokazywany jako tekst.
Gniazdo i HTTP
Pole wyszukiwania, akcje Nowy, Edytuj i Usuń oraz formularz to formularze oznaczone data-sgc-ws-send, każdy z ukrytymi polami action, crud i key, a host przekazuje je do ProcessAction. Wiadomość przez gniazdo nie niesie ścieżki i nigdy nie trafia do routera, więc zautoryzuj ją samodzielnie. W Delphi TsgcHTMX_Engine_Server.MessageSession zwraca sesję stojącą za ciasteczkami handshake lub nil. Dla HTTP RoutePath buduje ścieżki, które host deklaruje na routerze silnika: /customers, /customers/new, /customers/{id}/edit, /customers/save i /customers/{id}/delete.
Sposoby rozpoczęcia
Utwórz go w kodzie, jak powyżej, albo użyj kreatora w IDE Delphi: Tools › New sgcHTML CRUD page wypisuje zestawy danych na otwartym formularzu, odczytuje pola wybranego przez Ciebie zestawu i dodaje do formularza skonfigurowany komponent, a dwie linie podłączające trafiają do schowka. Wymaga Delphi 10.4 lub nowszego. Poza IDE narzędzie wiersza poleceń sgcHTMLGen zapisuje kod źródłowy strony w Object Pascal lub w C#, na podstawie tabeli, prefiksu trasy i pól, każde zapisane jako name:flag, na przykład ID:key lub NAME:req:60.
Dostępność
Element pakietu sgcHTML, sprzedawanego niezależnie od sgcWebSockets. Jednostka kompiluje się tam, gdzie zdefiniowano SGC_HTML, co sgcVer.inc robi dla pakietu HTML na każdej platformie z wyjątkiem Androida i iOS. Demo to Demos\60.HTML\01.RunTime\02.AdminCRUD, gdzie obszar klientów jest zbudowany na tym komponencie, obok ręcznie napisanej strony, którą zastąpił.