webForumDet fria alternativet

newWindow() från codebehind

9 svar · 466 visningar · startad av h00karem

h00karemMedlem sedan mars 200524 inlägg
#1

Jag hämtar bildkälla från en databas och visar bilderna i en tabellcell (bilderTd) på följande sätt ...

bilderTd.Controls.Add(new LiteralControl("<td><a border='0' href=''><img src='" + KatDr1["bildSrc"] + "' width='100' border='0' alt='" + KatDr1["bildNamn"] + Environment.NewLine + "Inlagd den: " + KatDr1["inlagd_den"].ToString().Substring(0, 10) + "'></a></td>"));

det blir alltså en tabell med miniatyrbilder som jag vill att man ska kunna klicka på så visas de i sin riktiga storlek (som ska kollas i javascript eller liknande) i ett nytt fönster. Men hur kommer jag åt en javascript-funktion från codebehind? Eller finns funktioner förr newWindow i c#?

janrochMedlem sedan jan. 200518 inlägg
#2

Jag undrar varför du vill öppna det nya fönstret från CodeBehind. För det går inte kan man säga. Det görs via javascript eller target-attributet på <a>-taggen.

Jag skulle nog skriva om din kod till

bilderTd.Controls.Add(new LiteralControl("<img src='" + KatDr1["bildSrc"] + onclick=javascript:window.open('" + KatDr1["bildSrc"] + "');>"));

Om du hajar vad jag menar. Tog bort lite extra bara för att tydligöra...

Men td-taggen o a-taggen ser jag inget behov för egentligen.

renholmMedlem sedan apr. 20012 266 inlägg
#3

För att dra det hela lite längre skulle jag skriva om din kod helt, poängen med ASP.NET ä att det finns kontroller som genererar HTML åt dig så att du slipper göra som i ditt exempel.

HyperLink link = new HyperLink()
link.NavigationUrl = "javascript:void(0);";
link.Attributes.Add("onclick", "windows.open ...etc");

Image image = new Image();
image.ImageUrl = KatDr1["bildSrc"];
image.Width="100";

link.Controls.Add(image);
bilderTd.Controls.Add(link);

Eller det är tom. ännu bättre med an repeater.

sharkfaceMedlem sedan okt. 200040 inlägg
#4

Tänk på att jag är nybörjare :) Det där med att skapa hyperlänkar och image = new Image() var inget jag visste. Men det e klart jag ska lägga den i en repeater :) När man e nybörjare så tänker man inte på det smartaste sättet alla ggr. Tackar

h00karemMedlem sedan mars 200524 inlägg
#5

men nu har jag lagt in bilderna i en datalist och tänkte att då kan jag använda javascriptet som vanligt men när jag klickar på en bild så händer ingenting. Vad e det jag missar?!

Det här är javascriptet för att öppna fönster i rätt storlek

<script language="javascript" type="text/javascript">
<!--

function DetectImageSize(picName,picSrc,picTitle){
pic = picName;
pic = new Image();
pic.src = picSrc;
picURL="bilderSida.aspx?bilder=" + picSrc;
w=pic.width+80;
h=pic.height+40;
nyttWin = window.open(picURL, "StinasSida", 'left=' + ((screen.width-w)/2) + ',top=' + ((screen.height-h)/2) + ',width=' + w + ',height=' + h + ',toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1');

 	newWindow.document.write('\<html\>\<head\>\<title\>'+picTitle+'\<\\/title\>\<\\/head\>\<body background="'+picURL+'"\>\<\\/body\>\<\\/html\>');

 	newWindow.focus();

}
-->
</script>

och så här anropar jag funktionen

				\<a href='javascript:DetectImageSize(\<%# DataBinder.Eval(Container, "DataItem.bildSrc").ToString().Substring(0, 8) %\>,"bildKategorier/\<%# DataBinder.Eval(Container, "DataItem.bildSrc") %\>","\<%# DataBinder.Eval(Container, "DataItem.bildNamn").ToString() %\>");'\>\<img src='bildKategorier/\<%# DataBinder.Eval(Container, "DataItem.bildSrc") %\>' width='100' border='0' alt='\<%# DataBinder.Eval(Container, "DataItem.bildNamn") + Environment.NewLine %\>Inlagd den: \<%# DataBinder.Eval(Container, "DataItem.inlagd_den").ToString().Substring(0, 10) %\>'"\>\</a\>
renholmMedlem sedan apr. 20012 266 inlägg
#6

Kontrollera vilken kod som verkligen generas och felsök den på klientsidan, förslagsvis med något verktyg som kan upptäcka javascript fel. Posta även den generade html koden här så kan vi hjälpa till.

h00karemMedlem sedan mars 200524 inlägg
#7

<table id="_ctl1_DataList1" cellspacing="10" cellpadding="0" align="Left" border="0">
<tr>
<td style="border-style:None;">
<a href='javascript:DetectImageSize(IMGP4079,bildKategorier/IMGP4079.JPG,Jag och Petter på RT90-bal)'>
<img src='bildKategorier/IMGP4079.JPG' width='100' border='0' alt='Jag och Petter på RT90-bal
Inlagd den: 2005-02-23'></a>
</td>

detta är en rad som genereras. Har inte riktigt kommit underfund med hur det funkar med ' och " mitt i en sådan här sträng för i ursprungsfunktionen (som jag använt på en vanlig htnl-sida) så är strängen inom ' '

Hur kan jag felsöka?

renholmMedlem sedan apr. 20012 266 inlägg
#8

Strängar i javascript ska omslutas antingen med '' eller "", dock har du använt ' för href och får därför använda " alternativt ändra till " för href och ' för javascript.

h00karemMedlem sedan mars 200524 inlägg
#9

Ah då funkar det :)
Tack för all hjälp

renholmMedlem sedan apr. 20012 266 inlägg
#10

Acceptera svaret så att tråden blir märkt som löst.

127 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)