PDA

View Full Version : href mit rowid im Popup



Ralf
26-Jan-2012, 12:35 PM
Hallo,

im Englichem Forum Ajax komme ich nicht weiter.. vielleicht liegt es ja an meiner eingeschränkten englichkenntniss.

Ich benutzt die Demo des CustomerPopup.asp. Auf der Popupseite möchte ich ein neues Formular öffnen und dabei die RowId übergeben.
Mit einen StandartReport geht das auch. Das Problem ist, daß aus dem Popup immer die RowId des ersten Datensatzes
der voriegen "customer_lookup" übergeben wird. ich benutze dazu:

<a href="Formular.asp?RowId=<%=oCustomer.ddvalue("Customer.rowid")%>" target="_blank" >MyLink</a>

auch das: <input type="hidden" name="customer__rowid" value="<%=Request("RowId") %>" /> hilft nicht.

Das gilt für den gesamten Datenbuffer also für alle Felder. Die sind zwar auf dem Schirm lassen sich aber anscheinend
auf einfachem Wege nicht übergeben !?

Wenn ich das richtig verstehe wird der Wert auch nur einmal, beim Aufruf der asp-Seite gesetzt.
Ich habe auch schon versucht das über Java zu lösen aber das ansprechen der Function im *.wo will nicht gelingen.
Kann da jemend einen Tipp zu abgeben was geht und was nicht - und wenn wie ?!

Ralf

Nicolas Gerig
31-Jan-2012, 01:39 PM
Hallo Ralf

"Wenn ich das richtig verstehe wird der Wert auch nur einmal, beim Aufruf der asp-Seite gesetzt. "

- Das ist richtig, ASP wird auf dem Server ausgewertet BEVOR das file an den Client-Browser gesendet wird. D.h. alle "dynamischen asp inhalte" werden durch statische "html texte" ersetzt und können nur durch neuladen der seite aktualisiert werden (KEIN AJAX).

Lösen musst du das Problem entweder in dem du den Link mit JavaScript änderst oder anstelle von der Record RowID mitzugeben Serverseitig speicherst.

1. Serverseitig speichern
Manchmal lohnt es sich die "Session" mit einem Zusätzlichen Feld zu versehen, da könntest du zum beispiel ein Feld haben wie "CustomerIdent". Wenn nun ein User einen Customer anwählt und findet kannst du einen Eindeutigen index des Customers in die Session speichern. Somit weisst du immer welchen Customer sich eine bestimme "Session" als letztes angesehen hat, und kannst beim laden deiner neuen seite die information zum laden von der Session holen.

2. JavaScript - Ansatz
Ich würde das generell so lösen, dass du über ein feld der datenbank gehst (nicht unbedingt RowId).
z.B. das feld mit id anhängen dass einen eindeutigen index hat:
<input type="hidden" name="customer__number" id="customer__number" />


<a href="javascript: jsOpenFormular()" >MyLink</a>

<script type="text/javascript">

function jsOpenFormular(){
customer_number = document.getElementById('customer__number').value( )
url = "Formular.asp?customer_number=" + customer_number;

fenster = window.open(url, "Popupfenster", "width=400,height=300,resizable=yes");
fenster.focus();
return false;
}

</script>

Code ist nicht getestet, kann schreibfehler enthalten ^^ sollte im prinzip aber funktionieren, habe ich so ähnlich auch verwendet.

Ralf
5-Feb-2012, 07:39 AM
Hallo und erstmal vielen Dank dass doch jemand antwortet.

Das Javascript will nicht laufen:



customer_number = document.getElementById('customer__number').value( )


dieser Teil will nicht laufen. Alles andere geht.

Ralf

Harm Wibier
7-Feb-2012, 03:46 AM
Hi Ralf,

DOM elements have a value property (not a function), it should be:


customer_number = document.getElementById('customer__number').value;


It might be that you are confusing it with the getValue function of the AJAX Library:


customer_number = vdf.getForm("myform").getDEO("customer__number").getValue();


ps. Sorry for using English, I do read German, but writing is a completely different thing...