Avatar billede Simon Praktikant
02. september 2006 - 18:34 Der er 22 kommentarer og
1 løsning

java string server-side c#

I ASP.NET har jeg en knap, som når jeg trykker på den skal udføre noget client-side java kode. Hvis jeg gør det således virker det upåklageligt:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick='window.open("mypage.aspx?ID=-1");'/>

----------------------------------------------------------------
Vælger jeg i stedet for at opbygge strengen java-kommando-strengen med c#-kode server-side således, virker det IKKE:

<asp:Button ID="Button2" runat="server" Text="Button virker ikke" OnClientClick='<%# BuildJavaString("-1") %>'/>         
---------------
protected String BuildJavaString(String ID)
{
return "window.open(\"mypage.aspx?ID=" + ID+ "\");";
}

----------------------------------------------------------------
Det underlige er imidlertid at jeg når jeg benytter BuildJavaString(ID) til at lave java-strenge til et gridview fungerer det fint. Her er min kode:

<asp:TemplateField>
<ItemTemplate>

<asp:ImageButton runat="Server" ImageUrl = "images/b_edit.png"
CommandName="Rediger"
OnClientClick ='<%# BuildJavaString(Eval("ID").ToString()) %>'
ID="RedigerButton"  >
           
</asp:ImageButton>
</ItemTemplate> 
<ControlStyle Width="20px" />
</asp:TemplateField>
----------------------------------------------------------------

Hvad gør jeg forker?
Avatar billede dr_chaos Nybegynder
03. september 2006 - 09:06 #1
prøv lige at tjekke den kode du kan se via browseren og se om der kommer noget output i onclientclick
Avatar billede Simon Praktikant
03. september 2006 - 10:11 #2
Der er slet ikke nogen onclick attribut. Men der er en onclick når jeg indsætter teksten som beskrevet i første tilfælde, og når jeg opbygger java strengen med c# samtidig med at jeg bruger en gridview.
Avatar billede Simon Praktikant
03. september 2006 - 10:11 #3
I outputtet til browseren har jeg aldrig set at der nogensteder stod onclientclick, men kun onclick
Avatar billede dr_chaos Nybegynder
03. september 2006 - 10:38 #4
er den nuværende knap en del af en kontrol ?
Avatar billede Simon Praktikant
03. september 2006 - 10:49 #5
Nej den er flit placeret på min web form.
Avatar billede dr_chaos Nybegynder
03. september 2006 - 10:59 #6
ok prøv lige at lave 
et breakpoint i din metode og se om den overhovedet bliver kaldt.
Avatar billede Simon Praktikant
03. september 2006 - 11:01 #7
Har lige prøvet. Den bliver kun kaldt når der refereres til den fra mit gridview. Ikke fra knappen
Avatar billede dr_chaos Nybegynder
03. september 2006 - 11:05 #8
prøv lige at fjerne # og indsæt = eller response.write
Avatar billede Simon Praktikant
03. september 2006 - 11:08 #9
med = bliver min kode i browseren:

<input type="submit" name="Button2" value="Button virker ikke" onclick="&lt;%= BuildJavaString(&quot;-1&quot;) %>;" id="Button2" />
Avatar billede Simon Praktikant
03. september 2006 - 11:08 #10
Jeg ønsker jo ikke at indsætte teksten "BuildJavaString(..)" men vil kalde metoden, og indsætte retur-værdien.
Avatar billede dr_chaos Nybegynder
03. september 2006 - 11:18 #11
ja det er jeg med på :)
hvordan ser din server side kode ud nu ?
Avatar billede Simon Praktikant
03. september 2006 - 11:28 #12
Hvilken del af serverside koden?

BuildJavaString(String ID)

er uændret
Avatar billede Simon Praktikant
03. september 2006 - 11:28 #13
Men problemet er jo at min denne metode over hovedet ikke bliver kaldt. :-(
Avatar billede dr_chaos Nybegynder
03. september 2006 - 11:29 #14
prøv lige med:

<asp:Button ID="Button2" runat="server" Text="Button virker ikke" OnClientClick='<% Response.Write BuildJavaString("-1"); %>'/>
Avatar billede Simon Praktikant
03. september 2006 - 11:40 #15
OnClientClick='<% Response.Write(BuildJavaString("-1")); %>
medfører:
onclick="&lt;% Response.Write(BuildJavaString(&quot;-1&quot;)) %>;"
---------------
og OnClientClick='<% Response.Write BuildJavaString("-1"); %>
medfører
onclick="&lt;% Response.Write BuildJavaString(&quot;-1&quot;) %>;"
Avatar billede dr_chaos Nybegynder
03. september 2006 - 13:42 #16
Efter at have testet en million metoder lader det til at du ikke gøre det på den måde du ønsker.
Enten skal du lave en onload metode på knappen og tilføje onclick fra code behind

eller
du kan gøre noget i denne stil:
<script type="text/javascript">

function BuildJavaString(id)
{
    window.open('mypage.aspx?ID='+id);
}
</script>


<asp:Button ID="Button2" runat="server" Text="Button virker ikke" OnClientClick="BuildJavaString('-1');" />
Avatar billede Simon Praktikant
03. september 2006 - 17:51 #17
Det var et godt forslag til hvordan det kan komme til at virke.
Jeg har implementeret onclick code behind som du foreslog.

Men det undrer mig dog stadig at det ikke er muligt at angive det i asp-koden, når nu det er muligt i gridview.

Grunden til at det virker i gridview, kan det have noget at gøre med hvornår der bliver binded?
Avatar billede dr_chaos Nybegynder
03. september 2006 - 21:13 #18
jeg tror det er fordi at eval og bind er functions kald.
Men er ikke sikker.
Tillader mig lige at smide et svar.
Avatar billede Simon Praktikant
03. september 2006 - 21:57 #19
Mange tak for hjælpen.
Avatar billede snepnet Nybegynder
03. september 2006 - 23:29 #20
OnClientClick='<%# BuildJavaString("-1") %>' skulle virke fint nok, sålænge du sørger for at kalde DataBind().
# er databindingsudtryk.... Der sker ikke noget med dem med mindre du databinder.
Mvh
Avatar billede Simon Praktikant
04. september 2006 - 20:34 #21
Ahh, ok, det er deri forskellen ligger. Nu forstår jeg meget bedre... et par briller faldt lige på plads i mit ASP.NET-puslespil :-) Takker endnu en gang!
Avatar billede Simon Praktikant
04. september 2006 - 20:34 #22
briller => brikker :-)
Avatar billede snepnet Nybegynder
04. september 2006 - 21:33 #23
Det var så lidt :o) - munter stavefejl den med brillerne :oD
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester