j-DataGrid
Dieses Raster wurde für Einzelseitenanwendungen und Unternehmensanwendungen erstellt.
- Benötigtes Gittersystem
bootstrap - Sie können problemlos mehr als 30.000 Zeilen rendern
- Unterstützt Drag&Drop-Spalten
- unterstützt das Sortieren
- Unterstützt die Größenänderung von Spalten
- Unterstützt vertikales/horizontales Scrollen
- unterstützt Filter
- unterstützt Kontrollkästchen
- Benutzerdefinierte Bildlaufleisten unabhängig vom Betriebssystem
- reaktionsschnell
- unterstützt den Dark-Modus
- Der Spaltenoptionsfilter WICHTIG benötigt die Komponente
j-Directory
TO-DO:
- Multisort
- Größenänderung der Spalten für Touch-Geräte
- Neuordnung der Spalten für Touch-Geräte
Datenquelle muss Folgendes enthalten:
{
schema: 'schema_id', // NEW: optional, DataGrid supports multiple schemas (it means: multiple declaration of columns)
items: [{ name: 'Row 1' }, { name: 'Row 2' }, ...] // items
page: 1, // current pages
pages: 30, // count of pages
limit: 5, // items limit per page
count: 150 // count of items in DB
}oder rohes Array, aber Sie können keine Paginierung und externe Filter verwenden:
[{ name: 'Row 1' }, { name: 'Row 2' }];Konfiguration:
filterlabel {String}ein Standardplatzhalter für alle Filter (optional)rememberfilter {Boolean}mit echten es erinnert sich an Filter für jedes Schema (Default:true)schema {String}ein Standardschema (Default:default)pluralizepages {String}Pluralisierung für Seiten (optional, Standard:# pages,# page,# pages,# pages)pluralizeitems {String}Pluralisierung für Elemente (optional, Standard:# items,# item,# items,# items)height {Number/String}Höhen der Netz, unterstützte Werte:auto(Nach dem Stand) - Neuesfluid,parent(oderparent1,parent2oderNUMBERals Höhe oderselectorfür jQuery.closest()minheight {Number}Minimale Höhen des Netzes, mitfluidundautohöhen (Default:200)parent {String}-Selektor fürauto-Höhenoption (Standard:window)margin {Number}ein oberer Rand für die Höhe (optional, Standard:0)boolean {String}ein Wert für die Filterung von Booleanwerte (optional, Standard:true|on|yes)resize {Boolean}ermöglicht die Wiedergabe von Spalten (optional, Standard:true)reorder {Boolean}ermöglicht die Wiederverordnung von Spalten (optional, Standard:true)sorting {Boolean}ermöglicht Sortierung (optional, Standardtrue)remember {Boolean}erinnert sich an die wiederordnungs- und wiederordnungssteile (optional, standardmäßigtrue)checkbox {Boolean}ermöglicht Checkboxescolwidth {Number}eine Standardkolumnbreite in Pixeln (optional, Standard150)rowheight {Number}ist eine Standard-Rennhöhe in Pixeln (optional, Standard:24) + es hängt von CSS abalignheader {String/Number}Align für Headerright(oder2odercenter(oder1(Optional und default)left)alignfilter {String/Number}Anpassung zum Filter-Inputright(oder2odercenter(oder1(Optional und default)left)align {String/Number}Anpassung für einen Kolumnwertright(oder2odercenter(oder1(Optional und default)left)click {String}eine Verbindung zu einem Pfad oderfunction(row, grid, row_el), wird ein Aufzeichnung zugeordnet / ausgeführt, wenn der Benutzer auf eine Reihe klicktclickid {String}ein Identifikator / Eigentumsname für die Rückverfolgung (für den vorherigen Rennen-Highlight), Standard:idhighlight {Boolean}wird in jeder ausgewählten Reihe (nachclick) hervorgehoben (Default:false)unhighlight {Boolean}ermöglichtundo highlightingder ausgewählten Reihe (Default:true)checked {String}pathzu einer Variable oder Pfad nachfunction(rows, grid)wird ausgeführt, wenn der Benutzer einige Zeilen ausgewählt / überprüftautoselect {Boolean}ermöglicht die automatische Auswahl der ersten Reihe im Netzwerk, es erfülltEXEC(config.click), Standard:falselimit {Number}eine Klustergrenze, Standard:80numbering {Boolean}, optionale Standardphasefalseallowtitles {Boolean}, ermöglicht Titel für alle Zeilenwerte, optionale Standardfalsebutton {String}eine Verbindung zufunction(btn_name, row, btn_element, event, name)wird ausgeführt, wenn der Benutzer auf einen button in der Reihe klicktexec {String}eine Verbindung zufunction(type, filter, sort, page)nur für Server-Seite-Bewegungen (es deaktiviert Client-Seiten-Sortierung und Filterung), unterstützte Typen:refreshoderpagechanged {String}pathzu einer Variable oder Pfad nachfunction(rows, grid)wird ausgeführt, wenn der Benutzer einige Zeilen ändertchange {String/Boolean}Boolean ermöglicht die interne Bearbeitung oder String muss einepathzu einer Variable enthalten oder der Weg nachfunction(meta, next(meta))ausgeführt wird, wenn der Benutzer doppelt auf eine Spalte klickt (metakannnullsein, wenn das Netz neu gemacht wird) +next(null)ersetzt erneut vorheriges Inhaltcolumns {String}ist ein Weg zur Definition voncolumns {Array}dblclick {String}eine Verbindung zu der Methodefunction(row, grid, row_el)wird ausgeführt, wenn der Benutzer doppelt klickt auf eine Reihenoborder {Boolean}kann eine Grenze rund um das Netz deaktivieren (Default:false)clusterize {Boolean}kann Cluster-Skrollung deaktivieren (Default:true)contextmenu {String}eine Verbindung zufunction(e, grid)wenn der Benutzer das Kontextmenü erhöhtautoformat {Boolean}ermöglicht Autoformate wieemail,phoneundnumber(Default:true)controls {Boolean}ermöglicht die incolumnsdefinierten Steuerungen (Default:true)hfunc {String}eine Verbindung zu der Methodefunction(el)wird ausgeführt, wenn der Benutzer auf die Ikon klickt, die an die erste Header-Reihe hinzugefügt wird. usefull, um andere Komponenten mit DataGrid einzuschließen.hfuncicon {String}hfunc Ikon z.B. zu Hause, cog usw.pagination {Boolean}ermöglicht/abschließt Pageing (Default:true)config.execwird ausgeführt, wenn die Spülbar am Ende ist, und Sie können als Raw-Reaktionarrayder Zeilen verwenden
ovalue {String}ist ein Standard-Schlüssel, umvaluevoncolumn.optionszu erhalten (Default:id)otext {String}ist ein Standard-Schlüssel, umtextvoncolumn.optionszu erhalten (Default:name)
Kolonne Eigenschaften:
name {String}ein Feldnamen in der Reihe von Objektentext {String}eine Spaltezeichen, Text mit.ti ti-homewird die Gesamt-Ikontitle {String}eine Spalte-Tooltype (optional)width {Number}eine Spalteweite (optional, Standardconfig.colwidth)filter {String/Boolean}ein Platzhalter für das Filter oderbooleankann Filter für diese Spalte deaktivieren (optional)filtervalue {Object}optionale, ein vorgegebener Filterwert (Default:undefined)filtertype {Number/String},1deaktiviert Smart Search (Default:0- es bedeutet, dass Smart Search aktiviert wird)align {String}kanncenteroderrightsein (optional, Standard:left)template {String}kann ein Tangular-Template sein und das Modell ist das ganze Objekt der Reihesorting {Boolean}ermöglicht die Sortierung (optional, Standard:true)search {Boolean/String}truewird einen Wert nach demtemplateErgebnis filtern oderStringkann ein Tangular-Template sein, das als Wert für die Suche verwendet wirdformat {String/Number}kann für Datum und Zahlen (Zahl von Decimalen) Feld (optional) verwendet werden, z. B.dd.MM.yyyyhide {Boolean}versteckt eine Spaltelistcolumn {Boolean}Standard: wahr, falsch für die Entfernung der Spalte aus der Spaltenlistehidden {String}als Fingerfunktioncolumn => true--> wird die Spalte verborgen (z.B. für den begrenzten Benutzer)options {Object Array}optionale, ein benutzerdefiniertes Filter zum Beispiel[{ text: 'yes', value: true }, { text: 'no', value: false }]o {String}r Link zur Datenquelleotext {String}optionale, ein Schlüssel für dastextFeld inoptions, Standardconfig.otextovalue {String}optionale, ein Schlüssel für dasvalueFeld inoptions, Standardconfig.ovaluebuttonapply {String}optionale, eine Etikette für dieApply-Schaltfläche in Spalten, Standard:Applyclass {String}optionale, ein angepaster Kolumnklasseempty {String/Boolean}optionale, kann leer Wert mit dem im leeren Feld definierten Wert wiederschreiben (trueWert verwendet---als Standardwert)min {Number}editable nur eine min.max {Number}editable nur ein max.required {Boolean}- nur redigierbardirsearch {String/Boolean}ist ein Plattform für die Suche nachj-Directory, Boolean mitfalsewird die Suche deaktivierentype {String}optionale, kann eine Datenart enthalten (string,boolean,date,number,email,phoneoderurl) für das Feldeditable {Boolean}ermöglicht die Bearbeitungcurrency {String}ein Währungsnamen (sie müssen inDEF.currencies) definiert werdeneditable {String}Ein Weg zum anpassbarenfunction(meta), wichtig:meta.next(new_value)odermeta.cancel()colorize {Boolean}ermöglicht eine Farbung des Wertesmonospace {Boolean}ermöglicht monospace-Schriftart- NEW
raw {Boolean}ermöglicht / verhindert HTML-Flüchtungen in Kolumnenfiltern (Default:false) - NEW
pair {Boolean}ermöglicht/deaktiviert Auto-Wert in Verbindung mit der Konfigurationoptions(Default:false)
Röhrungskontrolle (NEW):
- kann als Kolonne Typ
controlsdefiniert werden - muss die Spalte
templatedefiniert werden (Tangular,rowist ein Modell für Tangular für jede Reihe) - Schauen Sie sich zum Beispiel
- Die
click-Event-Button wird aufconfig.buttonfestgenommen
Filterung:
numbers: (1)numbersucht eine genaue Zahl, (2)number - numberist ein Abschnitt zwischen den Zahlenstrings: (1)stringsucht eine genaue Zeile, (2)string1, string2, string3ist ein mehrerer Suchkriteriumdates(1) Das Jahr2017Suche nach allen Daten in diesem Jahr, (2)2017-02-12 - 2017-03-13--02.12.2017 - 13.03.2017Es gibt einen Abstand zwischen den Datensätzen (3)12-20 - 12-31--20.12 - 31.12Ein Abstand zwischen den Daten im aktuellen Jahr und (4)2017-01 - 2018-05--01.2017 - 05.2018oder (5)-5 days---1 week---10 years
Methoden:
component.redraw([reselect_again])kann nochmals Zeilen redrawern (nur für Änderungen, wenn Sie einige Zeilen entfernen müssen, um das ganze Modell zu aktualisieren)component.resetfilter()kann ein Filter neu aufstellencomponent.exportrows(page_from or true from the current page, pages_count, callback(rows, internal_options), [reset_to_page or true for the current page])kann Zeilen mit Server-Side-Rendering exportierencomponent.appendrow(row_object, [scrolldown], [prepend])Appends und Rendercomponent.redrawrow(row_object, [new_object_row])redraws line oder NEW: ersetzt +redrawsrow_objectmit einem neuennew_object_rowcomponent.clear()klärt alle Veränderungencomponent.select(row)wähltrowmuss das gleiche Objekt sein wie in der Datenquellecomponent.editcolumn(row_index, col_index)führtconfig.changeintern aus (nur für fortgeschrittene Verwendung)component.applyfilter(obj)kann ein benutzerdefiniertes Filter{ name: 'Peter', age: '20 - 50' }anwendencomponent.resetcolumns()wiederherstellbarcomponent.readfilter()gibt einen aktuellen Filter zurückcomponent.rebind(schemaname__or__columnsdeclaration)die Methode verwandelt das Schemacomponent.reload()führtconfig.execmit dem aktuellen Filter und Sortierung auscomponent.empty()empties alle Zeilencomponent.redrawcolumns()Redraw Kolumne ohne Wiederherstellung- NEW:
component.schema(name)ändert ein Schema und erfrischt Daten
Eigenschaften:
component.metagibt interne Meta-Informationen über Filter, Spalten und Zeilen zurück
Gut zu wissen:
NULL('link.to.data')wertetconfig.execausSET('link.to.data', data, 'noscroll')--> Typnoscrollverhindert die Wiederherstellung des Schraubens
Wie erweitert man eine Klasse?
- Auf die
{{ if active }}-Linie wird eine Klasse der Reihe erweitert, indem Siedg-active-classhinzufügen, wenn dieactivegültig ist.
[
'{{ if active }} dg-active-class{{ fi }}',
{ name: 'name', text: 'Name', width: 200 },
// other columns ...
]Mehrere Schemata:
<ui-component name="datagrid" path="obj">
<script type="text/plain" data-id="SCHEMA_A">
[
{ name: 'name', text: 'Name', width: 200 },
// ...
]
</script>
<script type="text/plain" data-id="SCHEMA_B">
[
{ name: 'price', text: 'Price', width: 100 },
// ...
]
</script>
</ui-component>
<script>
// Usage
var obj = {};
obj.schema = 'SCHEMA_A';
obj.items = [];
// Changing of schema
setTimeout(function() {
obj.schema = 'SCHEMA_B';
obj.items = [];
UPD('obj');
}, 5000);
</script>Verwenden Sie es mit <ui-component name="datagrid">. Wenn die Komponente noch nicht geladen ist, lädt jComponent sie bei der ersten Verwendung von der Adresse in DEF.fallback herunter (standardmäßig das CDN Componentator). Autor: Peter Širka. Quelle: Componentator-Komponenten-Repository, MIT-Lizenz.
<ui-component name="LAZY directory"></ui-component>
<ui-component name="datagrid" path="items" config="margin:22;button:clicked">
<script type="text/plain">
[
{ name: 'name', text: 'Name', width: 200 },
{ name: 'price', text: 'Price', align: 1, alignfilter: 1 },
{ name: 'published', text: 'Public', align: 1, options: [{ name: 'yes', id: true }, { name: 'no', id: false }], type: 'boolean' },
{ name: 'description', text: 'Description', filter: 'Search in description' },
{ name: 'created', text: 'Created', template: '{{ created | format(\'dd.MM.yyyy\') }}', align: 2, alignfilter: 2, alignheader: 2 },
{ type: 'controls', template: '<button name="show"><i class="ti ti-search"></i><span>Show</span></button><button name="edit"><i class="ti ti-pencil"></i></button><button name="remove"><i class="ti ti-trash red"></i></button>' }
]
</script>
</ui-component>
<script>
var items = [];
for (var i = 1; i < 90; i++)
items.push({ name: '{0} Lorem ipsum dolor'.format(i), published: i % 5 !== 0, description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, mollitia!', price: i + 100, created: new Date().add('-5 days') });
function clicked(btnname, row, button, e) {
console.log(btnname, row);
}
</script>