Hallo alle zusammen,
also erstmal möchte ich mich dafür entschuldigen das ich euch mit diesem Thema nerve, allerdings bin ich gerade einfach vieeeeeel zu blöde um zu programmieren. Hoffe ihr helft mir trotzdem.
Also ich habe eine xsl-Datei bei der man mittels von checkboxen verschiedene Komponenten auswählen kann und drop down feld bei bei dem die dazugehörige Mengen ausgewählt werden kann.
Beispielhafter Code:
Ich weiß der code ist redundant aber das ist auch egal. Ok. Also was ich nun möchte, ist wenn der Benutzer nun eine Komponente ausgewählt hat und auf OK drückt, dass mir eine String der eine XML Datei beinhaltet zugeschickt wird, die das Format hat, wie es in dem Code unten steht. Der Benutzer kann aber nun auch mehrere Komponenten auswählen, daher müssen auch mehrere Rows dynamisch erzeugt werden können. Und ich möchte das all dies mit einem concat() zusammen gefügt wird. Dazu habe ich folgendes JS schonmal geschrieben, aber es ist nicht annähernd fertig und ich würde auch nicht sagen das es richtig ist, aber wie schon gesagt ich kann heute einfach nicht programmieren so:
Ich hoffe, ich konnte euch erklären was ich meine, wenn nicht probier ich gerne nochmal. Bitte bitte helft mir.
Gruß
also erstmal möchte ich mich dafür entschuldigen das ich euch mit diesem Thema nerve, allerdings bin ich gerade einfach vieeeeeel zu blöde um zu programmieren. Hoffe ihr helft mir trotzdem.
Also ich habe eine xsl-Datei bei der man mittels von checkboxen verschiedene Komponenten auswählen kann und drop down feld bei bei dem die dazugehörige Mengen ausgewählt werden kann.
Beispielhafter Code:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" media-type="text/html" encoding="UTF-8" />
<xsl:template match="/">
<html>
<head>
<title>Liste </title>
<link type="text/css" rel="stylesheet" href="listeFormat.css"/>
<script src="liste.js" type="text/javascript"></script>
</head>
<body>
<form id="form" method="GET">
<xsl:if test="Rowsets/Rowset[2]/Row/Komponente">
<span>
<input type="checkbox" id="komponente">
<label for="komponente" id="komponentenLabel">
<xsl:value-of select="Rowsets/Rowset[2]/Row/Komponente"/>
</label>
</input>
</span>
<span>
<select id="menge"> <xsl:for-each select="//Rowset[2]/Row"> <option value="Menge"> <xsl:value-of select="Menge"/> </option> </xsl:for-each>
</select>
</span>
</xsl:if>
<xsl:variable name="temp" select="Rowsets/Rowset[2]/Row/Komponente[1]" />
<xsl:for-each select="Rowsets/Rowset[2]/Row">
<xsl:if test="preceding-sibling::Row/Komponente[text() != $temp]">
<span>
<input type="checkbox" id="komponente">
<label for="komponente" id="komponentenLabel">
<xsl:value-of select="Rowsets/Rowset[2]/Row/Komponente"/>
</label>
</input>
</span>
<span>
<select id="menge"> <xsl:for-each select="//Rowset[2]/Row"> <option value="Menge"> <xsl:value-of select="Menge"/> </option> </xsl:for-each>
</select>
</span> </xsl:if>
</xsl:for-each>
<input id="behaelter" src="Rowsets/Rowset/Row/Behaelter" style="visibility:hidden"/>
<input id="anfMenge" src="Rowsets/Rowset/Row/angeforderteMenge" style="visibility:hidden"/>
</form>
<form id="buttonForm" action="irgendwas" method="GET">
<input type="textarea" name="Param.1" cols="50" rows="20" value=""/>
<input type="textarea" name="Param.2" cols="50" rows="20" value=""/>
<span><input id="buttonOK" type="button" value="OK" onClick="javascript:checkKopfmaterial('form')"/></span>
</form>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="Komponente">
</xsl:template>
<xsl:template match="Menge">
</xsl:template>
<xsl:template match="Behaelter">
</xsl:template>
</xsl:stylesheet>
Ich weiß der code ist redundant aber das ist auch egal. Ok. Also was ich nun möchte, ist wenn der Benutzer nun eine Komponente ausgewählt hat und auf OK drückt, dass mir eine String der eine XML Datei beinhaltet zugeschickt wird, die das Format hat, wie es in dem Code unten steht. Der Benutzer kann aber nun auch mehrere Komponenten auswählen, daher müssen auch mehrere Rows dynamisch erzeugt werden können. Und ich möchte das all dies mit einem concat() zusammen gefügt wird. Dazu habe ich folgendes JS schonmal geschrieben, aber es ist nicht annähernd fertig und ich würde auch nicht sagen das es richtig ist, aber wie schon gesagt ich kann heute einfach nicht programmieren so:
Code:
function checkKopfmaterial(formu) {
var deklarationK="<?xml version='1.0' encoding='UTF-8' ?> \n ";
var anfK="<Rowsets Version=\"\">\n <Rowset>\n <Columns> \n <Column Description=\"\" MaxRange=\"100\" MinRange=\"0\" Name=\"Komponente\" SQLDataType=\"1\" SourceColumn=\"Komponente\" /> \n <Column Description=\"\" MaxRange=\"100\" MinRange=\"0\" Name=\"Menge\" SQLDataType=\"1\" SourceColumn=\"Menge\"/> \n <Column Description=\"\" MaxRange=\"100\" MinRange=\"0\" Name=\"Behaelter\" SQLDataType=\"1\" SourceColumn=\"Behaelter\"/> \n <Column Description=\"\" MaxRange=\"100\" MinRange=\"0\" Name=\"angeforderteMenge\" SQLDataType=\"1\" SourceColumn=\"angeforderteMenge\"/> \n </Columns> \n ";
var kompAnfang="<Row> \n <Komponente>";
var kompEnde="</Komponente>\n <Menge>";
var mengeEnde="</Menge> \n <Behaelter>";
var behaelterEnde="</Behaelter> \n <angeforderteMenge>";
var anfMengeEnde="</angeforderteMenge>\n</Row>\n";
var ende="</Rowset>\n</Rowsets>";
var i="";
for(var j=0; j<formu.elements.length; j++){
i = formu.elements[j];
var komponentenRow="";
if(i.type=="checkbox"){
if (i.checked == true) {
var komp= document.getElementById('komponentenLabel').innerHTML;
var menge= document.getElementById('menge').innerHTML;
var behaelter= document.getElementById('behaelter').innerHTML;
var anfMenge= document.getElementById('anfMenge').innerHTML;
komponentenRow = kompAnfang.concat(komp, kompEnde, menge,mengeEnde, behaelter,behaelterEnde, anfMenge,anfMengeEnde);
}
}
}
document.getElementsByName('Param.2')[0].value = deklarationK.concat(anfK, kompRow, ende);
}
Ich hoffe, ich konnte euch erklären was ich meine, wenn nicht probier ich gerne nochmal. Bitte bitte helft mir.
Gruß