myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Web-Technologien » Umsetzung von Filtern für DB-queries in Razor Pages
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Umsetzung von Filtern für DB-queries in Razor Pages

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
UNeverNo UNeverNo ist männlich
myCSharp.de-Mitglied

avatar-2338.jpg


Dabei seit: 25.06.2007
Beiträge: 153
Entwicklungsumgebung: VS 2015


UNeverNo ist offline

Umsetzung von Filtern für DB-queries in Razor Pages

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich zerbreche mir gerade den Kopf wie ich schönstmöglich Filter darstellen und vom Benutzer befüllen lassen kann, so dass im Anschluss die DB damit gefüttert wird.

Aktuell mache ich es so:

Ich lege mir für die Controls, die als Filter dienen jeweils ein Feld (als string oder string[]) im Model an :

C#-Code:
        [BindProperty]
        public string[] FilterSelectedInternalStates { get; set; }

und weise das dann den Controls als Rückgabewert zu:

XML-Code:
    <form id="form_Paging" method="post">
        <div id="filtercriteria">
            <!-- die Klasse wird über jQuery entfernt wenn der Wert als Filterkriterium hinzugefügt wird -->
            <div class="hidden">
                <div>X</div>
                @Html.Label("", "Status:")
                <select asp-for="FilterSelectedInternalStates" asp-items="Model.InternalStates"></select>
            </div>
            <!-- hier aktivieren wir die zu verwendenden Filter -->
            <div class="floatleft">
                @Html.Label("", "Filter:")
                <select id="filter" asp-items="Model.Filters" onclick=""></select>
            </div>
        </div>
        <div>
            @Html.HiddenFor(item => Model.CurrentPage)
            @Html.HiddenFor(item => Model.MaxPage)
        </div>
    </form>

Außerdem hier zu sehen die Dropdownlist, über die ich die verwendeten Filter ein- bzw. ausblende. Die Filterwerte definiere ich im Model im Konstruktor wie folgt:

C#-Code:
Filters.Add(new SelectListItem() { Text = "", Value = "" });
Filters.Add(new SelectListItem() { Text = "Status", Value = nameof(FilterSelectedInternalStates) });

Die Sichtbarkeit steuere ich über jQuery:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
$(document).ready(function() {
    $('#filter').change(function () {
        //this returns the value of the list - getting the element by id
        //remove .hidden class        
        $('#' + this.value).parent().removeClass("hidden").addClass("floatleft");
        //hide entry
        $(this).find(':selected').addClass("hidden");
        //set selection
        $(this).val('');
    });

    $('div.hidden > div').click(function() {
        //add .hidden class
        $(this).parent().removeClass("floatleft").addClass("hidden");
        var value = $(this).siblings('select').attr('id');
        $('#filter').find('option[value=' + value + ']').removeClass("hidden");
    });
});

Nun frage ich mich ob es da nicht vielleicht etwas gibt, was so etwas in der Art schon macht, komme mir nämlich gerade so vor, als würde ich das Rad neu erfinden - und besonders schön sieht es aktuell noch nicht aus, abgesehen davon, dass ich noch nicht gelöst habe, wie ich den Filter denn am besten anwende.
Denn ich las von  PRG und frage mich, wie ich das jetzt am besten umsetzen würde? Ich habe einen Klick auf den 'Filter anwenden'-Button, löse einen Post aus, der mich auf eine neue Seite leitet, wo dann die Filterung erfolgt und dann (wann/wie?) leitet sie wieder auf die ursprüngliche Seite weiter?

Also eigentlich zwei Fragen - gibt es sowas irgendwo (Nuget/Blog) schon in schön? Kennt ihr was?
Wenn nicht, wie kann ich es mit PRG umsetzen?
30.04.2019 17:27 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Monate.
Der letzte Beitrag ist älter als 8 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 28.01.2020 05:38