webForumDet fria alternativet

Lite hjälp på traven...

.NET

14 svar · 518 visningar · startad av maqe

Medlem sedan dec. 2003824 inlägg
Frågan#1

Skickar upp en dialogruta på parent sidan med dennna kod i page loaden ...

btnOpen.Attributes.Add("onclick", "var strReturn; strReturn=window.showModalDialog('../popups/properties.aspx?id=' + myMenuId, 'null', 'resizable:no;help:no;status:no;scroll:no');if(strReturn != null) document.getElementById('txtValue').value=strReturn;")

här är koden på child sidan, properties.aspx

BtnOk.Attributes.Add("onclick", "window.returnValue = document.getElementById('txtValue').value; window.close();")
BtnCancel.Attributes.Add("onclick", "window.close();")

Nu vill jag fånga upp värdet från child fönstret och lagra det i databas. Någon som kan tips mig hur jag ska gå tillväga?

Medlem sedan dec. 2003824 inlägg
#2

Ingen som har nått förslag på en lösning?

Medlem sedan sep. 20011 914 inlägg
#3

Fattar inte riktigt, men menar du att när man trycker Ok i child fönstret så skall värdet tas imot i parent fönstret och där automatiskt göras en postback för att sätta in värdet i databasen.

Medlem sedan dec. 2003824 inlägg
#4

japps det stämmer bra det ...

Medlem sedan juli 20011 304 inlägg
#5

Jag gör så här när jag slänger upp en popup som låter användaren välja datum och returnerar värdet till huvudsidan:

På huvudsidan i javascript:

function GetDate(CtrlName)    {   
    ChildWindow = window.open('cal_popup.aspx?FormName=' + document.forms[0].name + '&CtrlName=' + CtrlName, "PopUpCalendar", "width=270,height=300,top=200,left=200,toolbars=no,scrollbars=no,status=no,resizable=no");    
			}

i html:koden:

<A href="javascript:GetDate('txtReg')"><IMG alt="Visa kalender" src="bilder/SmallCalendar.gif" border="0"></A>
<asp:textbox id="txtReg" CssClass="inputs1"></asp:textbox>

Javascript i popupen:

function ReturnDate()
{
    window.opener.document.forms["<%= strFormName %>"].elements["<%= strCtrlName %>"].value = "<%= strSelectedDate %>";
    window.close();
}
	        
function Close()
	    
{
    window.close();
}

Html i popupen:

<input id="Button1" onclick="Javascript:ReturnDate()" type="button" value="Välj" runat="Server" NAME="Button1" class="standard_button1">&nbsp;
<input id="Button2" onclick="Javascript:Close()" type="button" value="Stäng" runat="Server" NAME="Button2" class="standard_button1">

Vill du sen att det automatiskt ska bli en postback så kan du ju t.ex fånga onchange eventet på textboxen du får värdet på. Vill du kan du ju även hindra användaren från att se den eller ändra på den manuellt :)

Medlem sedan dec. 2003824 inlägg
#6

Dino va mer närmare den lösningen jag vill ha ...

Medlem sedan juli 20011 304 inlägg
#7

Posta svaret i querystringen till orginalsidan och ta emot det där om det bara är det du vill :)

Medlem sedan dec. 2003824 inlägg
#8

Ja det skulle ju fungera iofs ... en annan variant är att uppdatera databasen från child fönstret och sedan köra en refresh på parant fönstret för att uppdatera inställningarna man gjorde

Medlem sedan sep. 20011 914 inlägg
#9

Ok, då kanske jag kan hjälpa. Om du på din parent sida lägger till en linkbutton och en textbox.

<asp:linkbutton id="lbtData" style="display:none;" runat="server"/>
<asp:textbox id="tbData" style="display:none;" runat="server" />

Och när man trycker Ok så får du göra så att det körs en javascript funktion på parent sidan som letar upp textboxen och ger den det värdet du önskar. Därefter, fortfarande i javascript funktionen, så kallar du på __doPostBack med linkbuttonens_postback_signatur som utlöser en postback.

function insert(data){
   document.getElementById("tbData").value = data;
   __doPostBack('namnet_på_linkbuttonen, '');
}

Sen är det bara att hämta värdet i Linkbuttonens onclick function.

private void lbtData_Click(object sender, EventArgs e)
{
   InsertIntoDataBase(tbData.Text);
   BindData();
}
Medlem sedan dec. 2003824 inlägg
#10

Jag verkar få lite problem med postback när jag kör en modal dialog ruta med en aspx fil. När jag klickar på min cancel eller ok knapp så gör sidan en postback verkar det som och öppnas igen i ett vanligt fönster. Hur åtgärdar man detta?

Medlem sedan dec. 2003824 inlägg
#11

Testade detta men det blev ju inget snyggt :)
If Page.IsPostBack Then
Dim myClosingScript As String
myClosingScript = "<script language='javascript'>window.close()</script>"
Page.RegisterStartupScript(myClosingScript, myClosingScript)
End If

Medlem sedan dec. 2003824 inlägg
#12

Löste det problemet, <base target="_self"> va jag tvungen att ha med i head taggen annars öppnas en ny instans av browsern

Medlem sedan dec. 2003824 inlägg
#13

Nu behöver jag lite hjälp tror jag... Jag ska skicka med ett värde från parent fönstret till mitt dialogfönster.

Här är min parent.aspx:

<HTML>
<HEAD>
<title>WebForm1</title>
<script language="javascript">

	function Parameters()
	
	{
		var myValue = document.getElementById("txtValue")
	}
	
	\</script\>
\</HEAD\>
\<body MS_POSITIONING="GridLayout"\>
	\<form id="Form1" method="post" runat="server"\>
\<asp:TextBox id="txtValue" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 24px" runat="server"\>\</asp:TextBox\>
\<asp:Button id="btnOpen" style="Z-INDEX: 102; LEFT: 176px; POSITION: absolute; TOP: 24px" runat="server" Text="Open..."\>\</asp:Button\>

</form>
</body>
</HTML>

Och det här ligger i min codebehind i Page_Load:

btnOpen.Attributes.Add("onclick", "var strReturn; strReturn=window.showModalDialog('child2.aspx',Parameters ,'status:no;dialogWidth:370px;dialogHeight:220px;dialogHide:true;help:no;scroll:no');if (strReturn != null) document.getElementById('txtValue').value=strReturn;")

Min Child2.aspx:

<HTML>
<HEAD>
<title>child2</title>
<base target="_self">
<script language="javascript">

	function doInit()
	
	{
	
	window.document.all.item("txtValue").value = window.dialogArguments.myValue;
	
	}
	
	\</script\>
\</HEAD\>
\<body MS_POSITIONING="GridLayout" onload="doInit();"\>
	\<form id="Form1" method="post" runat="server"\>
\<asp:TextBox id="txtValue" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 24px" runat="server"\>\</asp:TextBox\>
\<asp:Button id="btnOK" style="Z-INDEX: 103; LEFT: 48px; POSITION: absolute; TOP: 56px" runat="server" Text="Ok" Width="56px"\>\</asp:Button\>
\<asp:Button id="btnCancel" style="Z-INDEX: 102; LEFT: 112px; POSITION: absolute; TOP: 56px" runat="server" Text="Cancel"\>\</asp:Button\>
	\</form\>
\</body\>

</HTML>

Och det här ligger i min codebehind i Page_Load:

btnOK.Attributes.Add("onclick", "window.returnValue = document.getElementById('txtValue').value; window.close();")

btnCancel.Attributes.Add("onclick", "window.close();")

Värdet jag skickar med ifrån parent sidan verkar inte komma med, har felsökt hela dagen ... någon som kan hjälpa mig och säga vad det är för fel? Undefined får jag som resultat i min textbox i dialogen... Värdet skickas aldrig med ifrån parentfönstret kanske??

Medlem sedan dec. 2003824 inlägg
#14

Har lyckats skicka fler värden till min dialog men inte tillbaka ...
såhär ser min codebehind ut:

Page.RegisterStartupScript("DoInit", "\<script language='Javascript'\>" & \_
"window.document.all.item('txtValue').value = window.dialogArguments\[0\];" & \_
"window.document.all.item('chkValue').checked = window.dialogArguments\[1\];" & \_
"\</script\>")

btnOK.Attributes.Add("onclick", "var arrArgs = new Array();" & \_
"arrArgs\[0\] = document.getElementById('txtValue').value;" & \_
"arrArgs\[1\] = document.getElementById('chkValue').checked;" & \_
"window.returnValue = ArrArgs; window.close();")

btnCancel.Attributes.Add("onclick", "window.close();")

När jag klickar okay i min dialog så skrivs [object] ut i textrutan på min parent sida ... Nån måste ju ha gjort det här förut??

Medlem sedan juli 20011 304 inlägg
#15

Ack så roddigt...

Om du kollar på koden som jag postade åt dig så ser du hur du ska göra. Orkar inte fundera ut vad som är fel på en 10 gåner längre och krångligare lösning :)

271 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)