Hej, Kan du inte instatiera kontroller på din huvudsida från det nya fönstret kanske? Försökte med det, men får det inte att funka... Nu har jag fått det att funka! :)Uppdatera formulär
Jag har ett formulär där man ska kunna lägga in info om nyheter kring ett valt företag.
Befintliga företag hämtas till en dropdownlist från en databas, så också ansvariga för inläggen.
Man fyller också i info om själva nyheten i olika fält.
För att lägga in ett nytt företag, eller ny ansvarig, använder jag knappar, som öppnar upp ett annat formulär i ett nytt fönster. När jag lagt in info där så återvänder jag till det ursprungliga formuläret genom en Redirect (använder asp och javascript). Hur gör jag för att "behålla" de eventuella värden man redan fyllt i i olika fält i ursprungsformuläret? Det känns bökigt att i asp skicka alla värden fram och tillbaka... Går det att lösa med javascript på nåt sätt?
Bifogar delar av koden till huvudformuläret, så kanske det är lättare att förstå vad jag menar...
//Cicci
Huvudformuläret
<title>Add a new topic</title>
<script language="javascript" type="text/javascript">
function newComp()
{ //öppnar ett nytt formulär, för att lägga in nytt företag
window.open("newComp.asp", "newComp", "");
}
function newEdit()
{ //öppnar nytt formulär, för att lägga in ny editor
window.open("newEdit.asp", "newEdit", "");
}
}
</script>
</head>
</head>
<body class="topmargin">
<%
'Hämtar namnet på det nya företaget, inlagt via newComp.asp
Dim newComp
newComp = Request.QueryString("newComp")
%>
<form name="topic" action="newCompTopicConf.asp" method="post" target="main">
<%
'Connects to the database
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
conn.Open "DSN=dbBIWeb;UID=;PWD="
%>
<table cellpadding="0" cellspacing="0" width="75%" align="center" border="0">
<tr height="40" valign="top">
<td width="95"><span class="form">Company</span></td>
<td>
<select name="comp">
<option value="none">- -Select a company- -
<%
'Gets all available company names of the category selected
SQL = "SELECT compName FROM Companies ORDER BY compName"
rs.Open SQL, conn
Do While Not rs.EOF
%>
<option value="<%=rs("compName")%>"
<%if (rs("compName") = newComp) then%> selected <%end if%>><%=rs("compName")%>
<%
rs.MoveNext
Loop
rs.Close
%>
</select>
</td>
<td width="220">
<input type="button" value="or add a new" onClick="newComp();">
</td>
</tr>
<tr height="50" valign="middle">
<td><span class="form">Title</span></td>
<td colspan="2"><input type="text" name="title" size="45"></td>
</tr>
......
.....
.....Sv: Uppdatera formulär
Jag tänker mig något i stil med.
window.opener.document.Form["namn"].foretagsName.value = this.foretagNamn.value;
Inte testat eller så men det kanske funkar :-)
Hoppas du fattar vad jag menar ...
//Mikael Sand
<body onLostFocus="DrinkCoffe();">Sv:Uppdatera formulär
Kanske för att det är 3 filer inblandade - huvudformuläret(1) har en knapp som öppnar ett annat formulär(2) i ett popup-fönster. Formulär(2) skickar sen värden till en tredje fil (asp), dom lägger in värdena i en databas. Frågan är hur jag sen kommer tillbaka till huvudformuläret, utan att öppna det på nytt - anropar jag sidan från den tredje filen, så laddas den ju in på nytt - och ev inskrivna värden försvinner...Sv: Uppdatera formulär
Jag löste det såhär med ett javascript:
I huvudformulärets fil la jag in dessa funktioner:
//funktion som öppnar nytt formulär
function compForm()
{
window.open("newComp.asp", "newComp", "height=300, width=450");
}
//funktion som uppdaterar dropdownbox med värde från pop-upformulär, utan att ladda in databasposterna igen
function addComp(choice)
{
alert(choice);
var len = document.topic.comp.length;
alert(len);
alert(document.topic.comp.options[len-1].text);
//här kan man ju anstränga sig och lägga in den i bokstavsordning...
document.topic.comp.options[len] = new Option(choice,choice,true,true);
//document.topic.comp.options.length = 0; - funkar
//alert("borta!");
}