Element bestimmen aus XSLT??
elene
- xsl
0 Thomas Meinike0 Thomas J.S.0 Elene0 Thomas J.S.0 elene
Hallo,
ich sitze nun schon den ganzen Tag an einem Problem, an dem ich nicht weiterkomme. Ist es möglich aus einer XML Ausgabe welche über XSLT läuft ein Element zu bestimmen?
Hintergrund ist folgender:
// Codebehind C#
DataSet ds = new DataSet("db");
xmlDisplay.DocumentContent = ds.GetXml();
hmm naja, also hier wird nun der Inhalt des DataSet als xml ausgegeben und anschließend dann über ein XSLT geleitet.
Der XML-Stream sieht dann ca. so aus:
<db>
<Print>
<ItemNr>0</ItemNr>
<Item>Abbildung</Item>
<Explication>rechtseindeutige Relation.</Explication>
</Print>
<Print>
<ItemNr>1</ItemNr>
<Item>Tabelle</Item>
<Explication>Darstellung einer Relation.</Explication>
</Print>
<Print>
<ItemNr>2</ItemNr>
<Item>WAF</Item>
<Explication>Web Application Firewall. </Explication>
</Print>
</db>
Die Anzahl der Print-Elemente hier sind dynamisch, da sie ja aus dem DataSet objekt kommen.
Das XSLT file sieht ungefähr so aus:
<form method="post" target="_self">
<div>
<xsl:for-each select="db/Print">
<table>
<tr>
<td><xsl:value-of select="Item"/></td>
<td><xsl:value-of select="Explication"/></td>
<td>
<input type="hidden" size="1" name="ItemNr">
<xsl:attribute name="value"><xsl:value-of select="ItemNr"/> </xsl:attribute></input>
<input type="submit" value="X"/>
</td>
</tr>
</table>
</xsl:for-each>
</div>
</form>
Unschwer zu erkennen: Ich weis nicht wie ich bestimmen kann auf welchen Submit -Button ich gedrück habe. Denn wenn ich am PostBack "ItemNr" abfrage erhalte ich alle "ItemNr"s die erzeugt wurden, das bringt mir nichts.
Gibts es denn eine Möglichkeit herauszufinden um welches <Print> Element es sich handelt und dieses zum Server zu posten? Dieses wird dann aus dem DataSet objekt gelöscht.
Danke für Eure Hilfe im Voraus
Hallo,
Gibts es denn eine Möglichkeit herauszufinden um welches <Print> Element es sich handelt und dieses zum Server zu posten?
<input type="submit" value="X"/>
<input type="submit" value="{ItemNr}"/>
sollte den ItemNr-Wert mitsenden und darauf koennte dann eine entsprechende Reaktion erfolgen.
MfG, Thomas
[Nachtrag:]
<input type="submit" value="X"/>
<input type="submit" value="{ItemNr}"/>
Ein name="..." gehoert natuerlich auch noch dazu, um ein name|value-Paar zu erhalten.
MfG, Thomas
Hallo Thomas,
<input type="submit" value="X"/>
<input type="submit" value="{ItemNr}"/>
Ein name="..." gehoert natuerlich auch noch dazu, um ein name|value-Paar zu erhalten.
Aber was bringt das?
Im value="" wird nur die ItemNr als Text im Submitbutton angezeigt und er bekommt noch immer alle ItemNr mitgeschickt.
Davon abgesehen hat er 1-n hidden-Felder im Formular die alle den Namen "ItemNr" tragen.
Grüße
Thomas
Hallo,
Aber was bringt das?
Im value="" wird nur die ItemNr als Text im Submitbutton angezeigt und er bekommt noch immer alle ItemNr mitgeschickt.
Der OP sollte bekommen, was er wollte: _Welcher Submit-Button_ betaetigt wurde anhand der jeweiligen ItemNr zum <input type="submit" name="..." value="..."/>
Vermutlich sind aber mehrere Formulare sinnvoller.
MfG, Thomas
Hallo,
Unschwer zu erkennen: Ich weis nicht wie ich bestimmen kann auf welchen Submit -Button ich gedrück habe. Denn wenn ich am PostBack "ItemNr" abfrage erhalte ich alle "ItemNr"s die erzeugt wurden, das bringt mir nichts.
Gibts es denn eine Möglichkeit herauszufinden um welches <Print> Element es sich handelt und dieses zum Server zu posten? Dieses wird dann aus dem DataSet objekt gelöscht.
Was spricht deinerseits pro Print ein Formular zu haben?
<div>
<xsl:for-each select="db/Print">
<form method="post" target="_self">
<table>
<tr>
<td><xsl:value-of select="Item"/></td>
<td><xsl:value-of select="Explication"/></td>
<td>
<input type="hidden" size="1" name="ItemNr" value="{ItemNr}" />
<input type="submit" value="X"/>
</td>
</tr>
</table>
</form>
</xsl:for-each>
</div>
Grüße
Thomas
Was spricht deinerseits pro Print ein Formular zu haben?
Diese Möglichkeit hatte ich davor schon ausprobiert. Frage vorweg. Darf es innerhalt eines Frames oder einer Seite denn überhaupt mehr wie einen SUBMIT -Button geben?
Ich habe nämlich das Problem wenn ich pro <Print> Element ein Formular erstelle, nur der erste SUBMIT -Button auch wirklich als ein "PostBack" erkannt wird. Die anderen werden als Post erkannt, also so als würde die Seite zum erstenmal aufgerufen werden.
Ich könnte dies zwar in meinem Codebehind mit Try&Catch so hinbiegen das es funzt -> Ist aber kein sauberer Programmierstiel. Kann den ein normaler BUTTON "<input type="button" ...>" auch irgentwie ein PostBack auslösen?
Hallo,
Diese Möglichkeit hatte ich davor schon ausprobiert. Frage vorweg. Darf es innerhalt eines Frames oder einer Seite denn überhaupt mehr wie einen SUBMIT -Button geben?
Klar. Wenn du 100 Formulare in der Seite hast, dann darfst du auch 100 Submitbuttons haben.
Du darfst sogar innerhalb eines Formulars mehrere Submitbuttons haben.
Ich habe nämlich das Problem wenn ich pro <Print> Element ein Formular erstelle, nur der erste SUBMIT -Button auch wirklich als ein "PostBack" erkannt wird. Die anderen werden als Post erkannt, also so als würde die Seite zum erstenmal aufgerufen werden.
Ich könnte dies zwar in meinem Codebehind mit Try&Catch so hinbiegen das es funzt -> Ist aber kein sauberer Programmierstiel. Kann den ein normaler BUTTON "<input type="button" ...>" auch irgentwie ein PostBack auslösen?
Ich habe nicht die leiseste Ahnung was du mit PostBack meinst. Für Formulare gibt es entweder POST oder GET.
Grüße
Thomas
Ich habe nicht die leiseste Ahnung was du mit PostBack meinst. Für Formulare gibt es entweder POST oder GET.
Naja die Frage wird wohl eher für ein ASP .NET forum sein. In ASP wird zwischen verschiedenen Arten von posts unterschieden (da, Zustandsorientiert gearbeitet wird). Nähmlich zwischen einem Erst-Aufruf der Seite oder einem request (postback) von einer bereits geladenen Seite.
Ich habe es aber nun so hingekreigt wie du mir geraten hast, für jedes Element ein Formular+Submit zu nehmen. Im Codebehind (C#) filtere ich dann heraus um welches Art des Posts es sich handelt.
Danke für den Tipp! ;-)