Vorbedingungen
Was die Hostanwendung einmal einrichten muss, bevor das erste Grid läuft. Fehlt davon etwas, erscheint keine Fehlermeldung, sondern eine leere Tabelle.
Einmal in der Hostanwendung einzurichten. Fehlt etwas davon, erscheint keine Fehlermeldung: Die Tabelle bleibt leer, ohne Gestaltung oder ohne Verhalten.
Setzt die Grundeinrichtung aus Basis › Vorbedingungen voraus.
Für jede Tabelle
| Was | Wo | Fehlt es |
|---|---|---|
Paket FMH.Komponente.Tabelle |
.csproj |
kennt der Compiler Fmh<T>.Grid nicht. Basis und Infrastruktur kommen transitiv mit und brauchen keinen eigenen Eintrag |
| Grundeinrichtung aus Basis › Vorbedingungen | Program.cs, _Layout.cshtml |
fehlen DataTables, jquery-fmh-grid.js und das SCSS der Tabelle. Die Tabelle erscheint als ungestaltete HTML-Tabelle, mit AjaxDataUrl ganz ohne Zeilen. Ohne die BodyIncludes läuft auch das Skript nicht, das jedes Grid einrichtet |
builder.Services.AddControllersWithViews(options =>
{
// Grundeinrichtung der Basis, siehe Basis › Vorbedingungen.
options.AddFmhWidgetOptions();
// Nur für AjaxDataUrl nötig, schadet mit BindTo aber nicht.
options.AddFmhTabelleOptions();
});
Die Bundles der Tabelle meldet das Paket selbst an, die Grundeinrichtung findet sie über die referenzierten Assemblies. Einen Eintrag je Datei braucht es nicht.
Zusätzlich für AjaxDataUrl
options.AddFmhTabelleOptions()ausFMH.Komponente.Tabelle.Erweiterungen. Es registriert den Binder fürGridDatatableParameter. Ohne ihn kommt der Parameter leer im Endpunkt an, weil der Browserstart,length,search[value]undorder[0][dir]schickt, nichtSkipundTake.AddFmhWidgetOptions()bringt ihn nicht mit, die Basis kennt die Tabelle nicht. Die Reihenfolge der beiden Aufrufe spielt keine Rolle, ein doppelter Aufruf trägt den Binder nicht zweimal ein. Wer bisheroptions.ModelBinderProviders.Insert(3, new GridDatatableParameterBinderProvider())geschrieben hat, ersetzt die Zeile durch den Aufruf.Die Antwort in Pascal Case. Das Grid liest
Datasource,TotalRecords,TotalDisplayRecordsundDraw. Der Serializer schreibt ohne Zutun Camel Case, und die Tabelle bliebe leer. Dafür genügt eine Einstellung mitPropertyNamingPolicy = null:private static readonly JsonSerializerOptions JsonPascalCase = new() { PropertyNamingPolicy = null };Die HTTP-Methode des Endpunkts passend zum Grid.
AjaxDataUrl(url)fragt ohne weitere Angabe per POST an,AjaxDataUrl(url, FormMethod.Get)per GET. Ein GET-Endpunkt bei POST-Abfrage antwortet mit 405, und in der Browser-Konsole steht der Hinweis des Grids auf die falsche Methode.
Wie der Endpunkt selbst aussieht, zeigt das Beispiel Datasource (Ajax) › Grundfall.