Einschränkung der Dropdown-Optionen basierend auf userID

8

Ich stelle diese Frage, weil ich mir nicht sicher bin, wie ich mein Problem am besten lösen kann.

Problem: Ich habe eine vorgefüllte Dropdown-Liste mit etwa 1000 Nummern. Ich muss einschränken, welche Zahlen in der Dropdownliste angezeigt werden, je nachdem, welcher Benutzer die Dropdown-Liste verwendet.

Lösung Ich dachte an:

  1. Verstecke alle Zahlen mit jQuery
  2. Verwenden Sie jQuery / AJAX, um eine Datenbank unter Übergabe einer Benutzer-ID
  3. aufzurufen
  4. DB gibt eine Liste von Werten basierend auf der Benutzer-ID
  5. zurück
  6. Optionen in Dropdown anzeigen, die dieselben Werte wie Zahlen haben, die von der Datenbank
  7. zurückgegeben werden

Sagen wir, das ist mein HTML :

%Vor%

Und das ist meine DB-Tabelle :

%Vor%

Ich muss zum Beispiel herausfinden, wie man user2 übergibt und 101.102.103 zurückgibt.

Ich kenne nur grundlegende js / jQuery, und ich bin nicht sehr erfahren mit DBs, so bin ich gerne zu allen Vorschlägen, die mir helfen können, mein Endziel zu erreichen.

EDIT / NOTE: So dumm wie das klingt ... Sicherheit ist hier keine große Sache. Dies wird auf einer internen Firmenwebsite verwendet, wo, wenn ein Benutzer das Bedürfnis verspürt, herumzuhacken und eine andere Nummer auszuwählen, dies wirklich nicht so wichtig wäre. Ich sehe auch keinen der Mitarbeiter des Unternehmens, die den Wunsch / die Notwendigkeit haben / wollen, eine andere Option zu wählen, als sie erlaubt sind.

Auch die Liste muss vorbelegt sein und dann Zahlen enthalten. So wie die Plattform, die ich benutze, eingerichtet ist, muss ich show / hide oder etwas Ähnliches verwenden.

    
Brett 23.04.2014, 19:34
quelle

8 Antworten

2

Dies ist das Beispiel der Datenbanktabelle und ein Beispiel für ein Select-Element. Dann denke ich, dass die beste Methode wäre, nichts selbst zu schreiben und einfach die Datenbank wählen zu lassen, was geteilt und wo geteilt werden soll.

Hier gehen wir mit der Codierung. Ich werde versuchen zu erklären, was ich schreibe und wie ich schreibe. da du ein Neuling bist: -)

HTML-Code für Sie

Der HTML-Code für Ihren Job wäre einfach wie dieser

%Vor%

Abrufen der Benutzer-ID

Nachdem der Benutzer sich angemeldet hat, versuchen Sie, die UserId mit einer der folgenden Methoden abzurufen.

jQuery

Um jQuery verwenden zu können, müssen Sie den generierten Wert des Servers verwenden, da jQuery die Serveranforderungen und den Code nicht beeinflussen kann. Sie können also eine einfache versteckte Eingabe erstellen und diesem den Wert des aktuell angemeldeten Benutzers geben. Hier ist das Beispiel

%Vor%

Nun können Sie mit jQuery den Wert für diese Eingabe abrufen. Hier wäre der Code dafür

%Vor%

ASP.NET

Um ASP.NET zu verwenden, tun Sie nichts. Alles, was Sie tun, ist, dass Sie die integrierte Methode von ASP.NET als

verwenden %Vor%

und es würde Ihnen einen ganzzahligen Wert geben. Welches wäre die userId des aktuell angemeldeten Benutzers.

Verwendung von WebSecurity

Die WebSecurity, wie der folgende Link angibt, ist eine Klasse von Daten. Das kann in Ihrer Anwendung verwendet werden, um den Code zu reduzieren und Ihnen zu helfen, die Eigenschaften des Benutzers mit einer besseren Rate zu erhalten.

Diese Klasse wird als Wert für die Variable oder als Parameter verwendet. Diese Methode würde die Eigenschaft eines bestimmten Benutzers zurückgeben. Sie können beispielsweise die Benutzer-ID des Benutzers, seinen Benutzernamen oder sein CreateDate abrufen oder Sie können WebSecurity verwenden, um sich bei einem Benutzer anzumelden oder ihn abzumelden.

Hier wäre ein Beispiel für die Verwendung von WebSecurity. Genau wie Sie eine Variable in jQuery erstellen und ihren Wert erhalten. Sie verwenden diese Methode und erhalten den Wert.

jQuery-Methode

%Vor%

WebSecurity.CurrentUserId-Methode

%Vor%

Dann können Sie es in der Datenbankabfrage verwenden,

%Vor%

oder, schreibe es in das Dokument

%Vor%

Oder tu was immer du willst. Sie können die Syntax der Klasse und andere Dinge in den Links von MSDN lernen. : -)

Ссылка

Senden der Ajax-Anfrage

Senden Sie jetzt die Ajax-Anfrage. Wenn Sie wissen, dann wunderbar! Wenn nicht, dann ist hier das Beispiel der zu sendenden Ajax-Anfrage

%Vor%

Sobald es fertig ist. Es würde die Optionen des Select-Elements aktualisieren. Aber warte, was würde es hinzufügen?

Sie, die kontrollieren es auch. Sie bearbeiten den serverseitigen Code wie folgt:

Abrufen der Daten aus der Datenbank.

Wenn Sie ein Neuling für die Datenbanken und ASP.NET sind, müssen Sie zuerst ein wenig lernen.

Ссылка

Ok, das kannst du auch etwas später lernen. Ich werde dir immer noch meinen ganzen Code erklären. : -)

Also müssen Sie für die Datenbank zuerst eine Verbindung zur Datenbank erstellen und dann können Sie ihre Tabellen und anderen Inhalt durchsuchen. Hier ist der Code

%Vor%

Nachdem Sie alle diese Werte erhalten haben, müssen Sie lediglich eine Antwort erstellen, die an den Client gesendet wird.

Ich hoffe, Sie verwenden Webseiten-Technologie. Gut! Du bist hier einen Schritt sicherer als andere.

Drücken Sie einfach "Bild ab" und gehen Sie zu den letzten Zeilen und erstellen Sie ein neues Element "Div"

%Vor%

Schreiben Sie jetzt eine if else-Anweisung und erstellen Sie eine Response, die zum select-Element hinzugefügt wird.

P.S. Andere Methode (Tatsächliche Methode) zum Ausgeben einer Antwort verwendet die Actuall HttpResponse-Klasse und gibt ihr die Werte. So,

%Vor%

Wenn Sie die obige Zeile schreiben, würde diese Zeichenfolge zu Ihrer SELECT-Anweisung hinzugefügt ( obwohl illegal ), aber das würde Ihnen die Verwendung erklären.

Ссылка

    
Afzaal Ahmad Zeeshan 04.05.2014, 19:29
quelle
5

Ich würde nur mit den Schritten 2-3 Ihres Ansatzes gehen; Allerdings würde ich die Zahlen nicht so speichern, wie Sie es gezeigt haben. Ein besserer Ansatz wäre, sie in einer Tabelle mit dem Namen user_value - oder so ähnlich - zu speichern:

%Vor%

Nur weil Sie in der Zukunft Werte einfach hinzufügen / entfernen / aktualisieren können, anstatt den durch Kommas begrenzten Wert zu analysieren.

Ich würde vermeiden, jQuery zu verwenden, um Dinge einfach zu "verstecken", weil Javascript vom Benutzer deaktiviert werden kann und er am Ende den von ihm gewünschten Wert (sichtbar oder unsichtbar) abgibt - Vertraue niemals Benutzereingaben.

Abschließend tun Sie das:

  1. Verwenden Sie jQuery / AJAX, um eine Datenbank unter Übergabe einer Benutzer-ID
  2. aufzurufen
  3. DB gibt eine Liste von Werten basierend auf der Benutzer-ID
  4. zurück
  5. Füllen Sie die Dropdownliste mit den Werten aus der Datenbank aus.
  6. Überprüfen Sie das Formular auf der Serverseite, um sicherzustellen, dass der übermittelte Wert in der Tabelle user_value vorhanden ist.
Icarus 23.04.2014 19:46
quelle
1

Ich bin immer noch etwas verwirrt über Ihre Einschränkungen, aber basierend auf Ihrem Kommentar:

  

Die Liste wird von einem Server, auf den ich nicht zugreifen kann, vorbelegt. DANN der AJAX-Aufruf an einen anderen DB (einfach, zwei Spalten) THEN gibt Werte an den ursprünglichen AJAX-Aufruf zurück, wobei THEN JS blendet die nicht zurückgegebenen Werte aus (oder zeigt die zurückgegebenen Werte an, wenn sie anfangs verborgen sind.)

Warum nicht einen "vereinheitlichenden" Dienst (auf einem Server) erstellen, so dass Sie nur einen AJAX-Aufruf (vom Client aus) machen?

http://MySite/MyService.aspx/GetOptionsForUser(101)

Dieser Dienst tätigt Aufrufe an beide Datenbanken und gibt eine Liste der zulässigen Option für die angegebene Benutzer-ID zurück. Auf diese Weise kann der Server den größten Teil des Problems bewältigen und die Menge an jQuery auf dem Client erheblich reduzieren.

Weitere Informationen:

Die URL ist, was jQuery verwendet, um den AJAX-Aufruf durchzuführen.

Am einfachsten ist es:

  1. Erstellen Sie eine Webseite mit dem Namen http://mySite/MyService.aspx
  2. Fügen Sie eine öffentliche Methode namens GetOptionsForUser () hinzu, die eine Ganzzahl akzeptiert und eine Liste mit Zahlen zurückgibt. Dies ist die "vereinheitlichende" Logik, die beide Datenbanken abfragt. Machen Sie die Methode AJAX-callable, indem Sie das Attribut WebMethod hinzufügen.
  3. Auf der bestehenden Webseite, auf der Sie Ihre Dropdown-Felder auffüllen möchten, führen Sie einen AJAX Aufruf von http://MySite/MyService.aspx/GetOptionsForUser durch. und übergeben Sie die Benutzer-ID als AJAX-Parameter.
nunzabar 29.04.2014 17:06
quelle
1

Ich denke, ein guter Weg wäre, JSON für alle Benutzer zu verwenden. Bereiten Sie ein JSON-Array für Benutzer mit Optionen vor und rendern Sie es basierend auf Benutzern, um Optionen aufzufüllen. zB.

%Vor%     
Vikram Singh 05.05.2014 15:29
quelle
1

Dies ist ein Beispiel, das zeigt, wie jquery ajax und php zusammenarbeiten:

Wenn zum Beispiel eine Schaltfläche auf einen Ajax geklickt wird, wird eine Bestellung an die Server-seitige Sprache (php) gesendet, und php verarbeitet diese Reihenfolge und zeigt eine passende Antwort an:

%Vor%

und hier ist PHP-Code mit dem Namen alertMe.php:

%Vor%     
M98 06.05.2014 11:25
quelle
1

Da Sie sagen, dass - Sie bereits Einträge ausgefüllt haben, wäre ich mit diesem Ansatz gegangen -

  1. Speichern Sie zuerst alle Elemente in einem JS-Array beim Laden der Seite -

    %Vor%
  2. Zeigen Sie dann für jede Benutzer-ID nach dem Abrufen der Elementliste die folgenden Elemente wie folgt an -

    %Vor%
brainless coder 06.05.2014 14:54
quelle
1

Wenn Sie nur einmal auf der ersten Seite laden müssen, ist dies die beste Option für mich

Beispiel:

%Vor%

EDIT: Ich sehe, dass Sie für asp.net benötigen, also versuchen Sie, dies zu konvertieren

    
al1en 06.05.2014 15:34
quelle
1

Einfaches Problem. Ich werde versuchen, auf deine eigene Art und Weise zu antworten, an die du gedacht hast.

0. Ihr bestehender HTML-Code

%Vor%

1. Verstecken Sie alle Zahlen mit jQuery

%Vor%

2. Verwenden Sie jQuery / AJAX, um eine Datenbank aufzurufen und eine Benutzer-ID & amp; zu übergeben 3. DB gibt eine Liste von Werten basierend auf der Benutzer-ID

zurück %Vor%

4. Optionen in Dropdown-Listen anzeigen, die dieselben Werte wie Zahlen aufweisen, die von der DB zurückgegeben wurden

%Vor%     
nehemiah 06.05.2014 14:54
quelle