Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > [GELÖST]Request per JS übergeben

[GELÖST]Request per JS übergeben

Ich benutze schon einige male die Übergabe des Requestwertes per JS. Jetzt möchte ich dies beim Click auf eine Schaltfläche innerhalb einer Ansichttabelle tun.

Dann bekomme ich den Fehler "Error in onclick: a is null"

function uebASP()
{
//imageactioncontrolB707DE15
//$drRecord.getValueHolder('textcontrol1E8ABCEF').getValue()
//var o_btnRequest = getElement("A6DBFC63A5826C2D86591D4FD1C48C222921CB09"); /*btnRequest buttoncontrol*/
var o_btnRequest = getElement("9D79597DAF262D648DC0E06C5FAF71FC6B481DEB"); /* imageactioncontrol*/
var aspSuche = getElement("B1A5E927E5F1054941F29CF9873C740C8C41DA37"); /*ASP_SUCHE textcontrol*/

if (aspSuche.value != ""){

o_btnRequest.oUp.oTarget.addParam = Helper.setQsValueByParam("rq_ASPsuche",aspSuche.value,o_btnRequest.oUp.oTarget.addParam);
//alert(aspSuche.value);

}


return true;
}

Wenn ich die gleiche Funktion mit dem Buttoncontrol mache gibt es KEINEN Fehler. Aber dann erreiche ich auch nicht die gewünschte Ansichtseite nicht.

Wo liegt der Unterschied zwischen dem Buttoncontrol und dem Imageactioncontrol?

Sieht die Zuweisung des Requestwertes beim Imageactioncontrol anders aus?
24.02.2016 12:02 von cbarth
Also ich lese Werte in JS aus einem Feld immer mit

var aspSuche = getTextValue(getElement("guid"));


aus.


Lass dir doch den Wert aus aspSuche erstmal per alert("aspSuche="+aspSuche); anzeigen, um zu kontrollieren ob die Variable einen Wert hat.
25.02.2016 07:07 von Ulrikus
Was genau ist "Innerhalb einer Ansichtstabelle"?
Falls die Schaltfläche die verändert werden soll innerhalb einer Ansichtstabelle liegt, geht das nicht einfach mit getElement.
Mit getElement erhält man nur eine Schaltfläche, in einer Tabelle ist aber eine Tabelle pro Datensatz.
D.h. man muss erst die Tabelle mit getElement auslesen und dort dann die Schaltflächen der einzelnen Datensätze.
25.02.2016 07:14 von MartinW
Hallo MartinW,

danke dass du mich drauf gebracht hast. Die Schaltfläche ist natürlich pro Tabellenzeile. Damit wird es mir zu kompliziert. Ich könnte doch aber im Expertattribut der Schaltfläche den Request setzen.
Aber wie erreiche ich den Wert außerhalb der Tabelle mit $DR.Record... liest man in der Tabellenzeile. Wird denn $DC.get... an dieser Stelle funktionieren?
25.02.2016 09:03 von cbarth
Ja, $DC liest Werte von Feldern auf der Seite, sollte funktionieren.
25.02.2016 09:25 von MartinW
Hallo Martin,

leider
führte $DC nicht zum Erfolg. Damit gab es einen sehr verwirrenden Effekt. Die
Zielseite ist als Tooltip Modal definiert. Der Einsatz von $DC führte dazu dass
die Zielseite
nicht als Tooltip sondern im aktuellen Fenster angezeigt wurde
und KEIN Requestwert an der Zielseite ankommt. Also habe ich die Übergabe mittels Cookie realisiert.


Dabei hat mir dieser Thread

https://www.unitedplanet.com/forum/index.php?page=Thread&postID=35678&highlight=cookies#post35678

geholfen.
26.02.2016 10:11 von cbarth
Hallo,

noch ein Vorschlag...

Erst mal: ActionControls in Ansichtstabellen oder freien Tabellen werden von Intrexx anders aufgebaut, wie wenn sie auf einer Seite stehen.
Auf einer Seite wird das upActionControl direkt gebildet und kann jederzeit über getElement("<GUID>").oUp angesprochen werden.
In den Ansichttabellen (oder auch freien Tabellen) wird das upActionControl-Object erst in einer globalen - für alle "Zeilen"-Controls gleichen - Funktion im onclick-Event, mit Übergabe verschiedener Parameter wie Index, Datensatz-ID u.ä., gebildet. Daher ist es vor einem CLICK nicht ansprechbar.
Wenn dem ActionControl ein benutzerdefiniertes Script zugeordnet ist, wird dieses Script NACH der globalen Funktion ausgeführt und somit existiert das upActionControl-Object.
Das heisst, dass du deine Funktion in den benutzerdefinierten Scripts (Eigenschaften) dieser Schaltfläche als onclick-Event hinterlegen musst.

Die Funktion sieht dann so aus:
function uebASP(p_oControl)
{
var aspSuche = getElement("B1A5E927E5F1054941F29CF9873C740C8C41DA37");
if (typeof p_oControl == "object" && p_oControl.oUp && aspSuche && aspSuche.value !== ""){
p_oControl.oUp.oTarget.addParam = Helper.setQsValueByParam("rq_ASPsuche",aspSuche.value,p_oControl.oUp.oTarget.addParam);
}
return true;
}

Diese Funktion muss dann im Script-Bereich der Schaltfläche folgendermaßen aufgerufen werden:
uebASP(this);


et voilà!

Es gibt noch einen Weg, dies zu realisieren.
Jedoch wird der Request-Parameter dadurch immer gesetzt. Dann muss auf der Zielseite geprüft werden, ob der Parameter eine leere Zeichenkette enthält.
Möchte aber trotzdem das Beispiel zeigen.
Dafür wird in den Expert-Attributen der Schalfläche der eigene Requestparameter fest definiert. Allerdings weist man ihm den eigentlichen Wert via Javascript zu:
rq_ASPsuche :
" + getElement('B1A5E927E5F1054941F29CF9873C740C8C41DA37').value + "

Wichtig sind die beiden Double-Quotes am Anfang und Ende des Wertes! Nun wird dieser Request-Parameter in der besagten globalen Funktion, die das ActionControl-Object anlegt, mit eingebunden.
Aber wie gesagt. Der Parameter wird dann immer gesetzt und zudem sind keine Kontroll-Mechanismen, geschweige denn Fehlerbehandlungen, möglich.

Auf diese Idee bin ich aber auch erst durch ein Expert-Attribut gekommen (siehe dynamic-param-xxx). attention

Gruß,
handw3rker
26.02.2016 12:35 von handw3rker
Danke Handw3rker,

die Lösung werde ich mir merken und bei der nächsten Möglichkeit umsetzen. Im Moment geht es mit Cookies... attention
07.03.2016 11:23 von cbarth
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg