Autor Thema: Dynamische Dialoglisten im Web, ohne Seite neu zu laden  (Gelesen 4100 mal)

Offline machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Hallo,

ich habe folgendes Problem:

Gegeben ist ein Web-Formular, in welches der User seine Daten in seinem Personendokument im Adressbuch pflegen/ändern kann.
Dort gibt es untereinander abhängige Auswahllisten für (Abhängigkeit in Reihenfolge:)

1. Firma
2. Kostenstellengruppe
3. Kostenstelle
4. (berechnetes Textfeld) Kostenstellen-Nummer


Als Vorgabewert soll natürlich das ausgewählt sein, was auch im Adressbuch eingetragen ist.
Das Problem ist allerdings, dass das Feld "Kostenstellengruppe" nicht im N&A gespeichert ist und über diverse Lookups erst geladen werden muss.
Beim erstmaligen Laden der Form wird zwar die richtige Firma vorselektiert, aber die anderen Auswahllisten sind leer. Erst, wenn ich einmal die Auswahl im Feld Firma ändere (und wieder zurück), werden die richtigen Werte geladen.
Desweiteren habe ich das Problem, dass nach Auswahl eines anderen Wertes für den User nicht direkt ersichtlich ist, dass die Form neu geladen wird (change choices on document refresh ...)
Dadurch heisst es dann natürlich: "Geht nicht".

Nun meine eigentliche Frage:

Was mir vorschwebt ist, die kompletten Auswahllisten direkt zu Anfang zu laden und dann beim onChange-Event der jeweiligen Auswahllisten die anderen Listen dynamisch neu zu befüllen.
Hat das schonmal jemand gemacht, bzw. hat jemand eine Idee, wie ich da am sinnvollsten rangehe (mit JavaScript)?

(Auf keinen Fall möchte ich die Sache mit dem neuladen des Dokumentes beibehalten)

Danke und Gruß

Stefan


Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #1 am: 25.11.05 - 00:28:39 »
Das geht, ist aber mit etwas Aufwand verbunden.

(Beispiel-Link am Ende...)


1)
Beim Öffnen der Maske ziehst Du Dir alle möglichen "Werte-Paare" zusammen,
z.B. über DbLookups oder WQO

Alternativ (so machen wir es), liegen die Möglichkeiten schon irgendwo zusammengepackt vor. z.B in einem Konfigurationsdokument.

Du hast dann eine Liste in der Art:

Oberkategorie_1=Unterkategorie_1_1~Unterkategorie_1_2~Unterkategorie_1_3~... :
Oberkategorie_2=Unterkategorie_2_1~Unterkategorie_2_2~Unterkategorie_2_3~...

z.B:

"Dänemark=Bornholm~Djursland~Falster~Färöer~Fünen~Jütland~Langeland":
"Deutschland=Allgäu~Bodensee~Eifel~Franken~Hamburg" :
...

2)
Aus den jeweiligen Oberkategorien füllst Du Deine 1. Dialogliste.
In diesem Fall wären das die Länder.

@Word( _ValueList; "="; 1);

Dieses Feld heißt im Beispiel "Line_1_Keyword"


3.)
Über eine Pass Thru HTML - computed value schreibst Du über @Formeln dynamisch ein Javascript-Array in Deine Webseite, welches genau die Unterkategorien enthält, beginnend bei [1].


arrModels[1] = "Bornholm;Djursland;Falster;Färöer;Fünen;Jütland;Langeland";
arrModels[2] = "Allgäu;Bodensee;Eifel;Franken;Hamburg" ;


Hier eine Beispiel-@Formel, die Dir aus Deiner Wertepaare-Liste das Javascript-Array schreibt:


_SecondCategory := @Word( _ValueList; "="; 2);

_Elem := @Elements( _SecondCategory);
_n := 0;

@NewLine +
"<script language=JavaScript>" + @NewLine + @NewLine +

"var arrModels = new Array(); " + @NewLine +

@Implode(
@Transform( _SecondCategory; "x"; @Do(
_n := _n + 1;
("arrModels[" + @Text(_n)  + "]   = \"" + @ReplaceSubstring( x ; " ~" : "~ " : "~"; ";") +

"\";"))
); @NewLine) +

@NewLine +
"</script>" + @NewLine



4.)
Du baust ein Feld in die Maske
In diesem Beispiel ""Line_1_Depand"
Text, editable, Default vaue: Line_1_Depand,
vollständig hidden in Notes und im Web


5.)
Du baust ein Feld in die Maske
In diesem Beispiel "Line_2_Keyword"
Text, editable,
vollständig sichtbar in Notes und im Web,
ABER mit dem HTML-Tag "type=hidden"


6.
Man benötigt weiterhin eine computed value, Pass thru HTML:

"<select name=\"Line_1_Depand\" class=\"searchfield\">" + @NewLine +
"<option value=\"all\">alle</option>" + @NewLine +
"<option value=\"\"></option>" + @NewLine +
"</select>"


7.
Die Maske darf NICHT die Eigenschaft haben: "generate HTML for all fields"


8.)

onchange="ChooseMake":

Im onChange Event des 1. Dialogs (= Line_1_Keyword)
(geht übrigens genau so gut mit Checkboxen und Radiobuttons)
rufst Du diese nette JS-Funktion auf:


function ChooseMake(boolHeadContained)
{
   var arrModelList;
   var objModelSelection;
   var objMakeSelection;
   var intOffSetForAll;
   var i;
   if (document.forms[0].Line_1_Depand == null) {
   return;
    }
   objModelSelection = document.forms[0].Line_1_Depand;
   objMakeSelection = document.forms[0].Line_1_Keyword;
   objModelSelection.selectedIndex = 0;
   objModelSelection.options.length = 1;

   if (boolHeadContained)
      intOffsetForAll = 1;
   else
      intOffsetForAll = 0;
       
   if (objMakeSelection.selectedIndex >= intOffsetForAll){
      arrModelList = (arrModels[objMakeSelection.selectedIndex + 1 -

intOffsetForAll]).split(';');
           for (i = 0; i < arrModelList.length; i++){
             objModelSelection.options.length = i+2;
             objModelSelection.options[i+1].value = arrModelList
             objModelSelection.options[i+1].text = arrModelList
           }
   }
   
   if( document.forms[0].Line_2_Keyword.value != "" ) {   
   objModelSelection.value = document.forms[0].Line_2_Keyword.value
   }
} // ChooseMake


9.)
Diese Funktion gehört dementsprechend dann in den JSHeader der Maske.


Das war's dann.


Kein ganz leichter Spaß, aber es funktioniert gut.
Das Ergebnis exakt dieser Methode siehst Du z.B unter:

http://www.privatevillas.de/fewo.htm

Und wenn Du nach dieser Aktion dringend Urlaub brauchst,
bist Du dort auch gleich richtig...


Viel Erfolg,
Gruß,
Uwe

Offline machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #2 am: 25.11.05 - 12:51:03 »
Hallo Uwe,

danke erstmal für die ausführliche Hilfe. Das ist ja schon ein ganz schöner Brocken.
Ich hab's mir mal auf Deiner Seite angeschaut, ist sehr gut gemacht.
Allerdings muss ich wohl noch einiges an Gehirnschmalz reinstecken, da bei mir die 3. Kategorie ebenfalls in Abhängigkeit von der 2. dynamisch ist. (Bei Dir ist ja die 3. Kat. "Objektart" immer gleich).
Ich werd mal versuchen, ob ich das mit mehrdimensionalen Arrays (und da eine Mischung zwischen "normalen" und assoziativen) hinbekomme.

Gruß

Stefan
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #3 am: 08.04.06 - 02:35:11 »
Mittlerweile ist so etwas ein Parade-Beispiel für AJAX.
Ich würde also fast empfehlen, das "Schmalz" auf die oben gepostete Lösung zu sparen und es lieber gleich  mit dieser neueren Technik zu versuchen.

Die Anforderung schreit gerade zu nach AJAX - wer posted das erste Domino-Beispiel hierfür im atnotes-Forum... ?

Gruß,
Uwe

Glombi

  • Gast
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #4 am: 08.04.06 - 07:58:35 »
Ajax, Das hört sich interessant an.

Hier mal als Einstieg folgendes - Ajax and Domino

http://ajaxpatterns.org/Lotus_Notes_Ajax_Frameworks

Ich denke, wir sollten da einen eigenen Thread machen.

Andreas

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #5 am: 08.04.06 - 09:08:29 »
Ich teste gerade die Nützlichkeit der neuen JavaScript/Ajax-Tools von Myeclipse und lese das Buch bei Manning von (u.a. Eric Pascarello, SEHR GUT) sowie Ajax Patterns and Best Practices vom Schweizer Webdesigner Christian Gross. .
Sieht alles soweit sinnvoll aus.
Codestore hat einige interessante Artikel zu Ajax mit Domino und Ruby on Rails:
http://www.codestore.net/store.nsf/srch?SearchView&Query=Ajax&SearchFuzzy=TRUE&start=1&Count=10&SearchType=srch
Ansonsten natürlich Ajaxian.com

Ein bischen architektonischer Hintergrund:
http://drunkandretired.com/podcast/
- Episode 37

Gut ist auch der englische Wiki-Eintrag: http://en.wikipedia.org/wiki/Ajax_%28programming%29
sowie das Interview mit dem Ajax Erfinder Jesse James Garret (2. der Podcasts von Ajaxian).

Axel
« Letzte Änderung: 08.04.06 - 18:19:33 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #6 am: 13.10.06 - 01:11:26 »
Zitat
Mittlerweile ist so etwas ein Parade-Beispiel für AJAX.
Ich würde also fast empfehlen, das "Schmalz" auf die oben gepostete Lösung zu sparen und es lieber gleich  mit dieser neueren Technik zu versuchen.

Die Anforderung schreit gerade zu nach AJAX - wer posted das erste Domino-Beispiel hierfür im atnotes-Forum... ?

Gruß,
Uwe

Wir haben nun so eine dreistufige, abhängige Dialogliste im Web
in AJAX realisiert. Und ich würde nie wieder auch nur dran denken, dass mit was anderem als AJAX zu machen.
AJAX und Domino - dass passt einfach genial.

Wenn noch Interesse besteht, kann ich hierzu (dreistufige, abhängige Dialogliste im Web) mal was posten.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Dynamische Dialoglisten im Web, ohne Seite neu zu laden
« Antwort #7 am: 13.10.06 - 06:42:24 »
Ja mach doch mal, bitte.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz