Avatar billede nat Nybegynder
05. januar 2006 - 10:28 Der er 17 kommentarer og
1 løsning

Åbne link med onclick

Hej Eksperter,

Jeg har følgende link på en aspx-side:

<Asp:HyperLink id=HyperLink runat="server" Text='<%#DataBinder.Eval( Container, "DataItem.ID")%>' href='<%#ReturnUrl(DataBinder.Eval(Container, "DataItem.ID").ToString())%>' target="_blank" />

Denne vil jeg gerne kunne åbne uden adresselinje, da det er et dokument. Så jeg tænke at jeg kunne bruge onclick, som f.eks. her:

onclick="window.open('<%#ReturnUrl(DataBinder.Eval(Container, "DataItem.ID").ToString())%>', 'NavnXX');return false;"

Men dette fungerer ikke og den kommer og brokker sig.

Hvordan får jeg den til at bruge onclick og åbne det der før stod i href?
Avatar billede Slettet bruger
06. januar 2006 - 06:10 #1
Hvis du vil bruge Asp:HyperLink kan du tilføje en onclick med metoden SetAttribute.
Avatar billede nat Nybegynder
06. januar 2006 - 09:31 #2
Kan du give et eksempel på hvordan?
Avatar billede Slettet bruger
07. januar 2006 - 08:22 #3
I din code behind

HyperLink.SetAttribute("onclick", "window.open.....");

Noget helt andet hvis du ikke har brug for server-side adgang eller events til ASP:HyperLink så lave være med at bruge men brug et almindelig a-element, det er trodsalt lettere at sætte en onClick på ende at skulle hoppe rundt med SetAttribute.


Så byt <asp:hyperlink med <a href...
Avatar billede nat Nybegynder
11. januar 2006 - 09:28 #4
Jeg kan slet ikke sætte SetAttribute på HyperLink!? Skal jeg have en speciel using eller???

Hvis jeg laver en almindelig a er det som om at den ikke kan bruge den metode jeg har lavet der hedder ReturnUrl som returnere en sti/url til hvor filen ligger...
Avatar billede Slettet bruger
11. januar 2006 - 09:31 #5
Sorry havde ikke lige kode tilgængeligt da jeg skrev første gang, nedenstående er checket.

HyperLink.Attributes.Add("onclick", "window.open.....");
Avatar billede nat Nybegynder
11. januar 2006 - 09:54 #6
Hmm, er der et bestemt sted codebehind jeg skal skrive det? Umiddelbart har hyperlink ikke de muligheder du skriver.
Avatar billede nat Nybegynder
11. januar 2006 - 09:59 #7
ahhh, skulle bare lige have fat i Hyperlink....
Avatar billede nat Nybegynder
11. januar 2006 - 10:07 #8
Jeg får følgende fejl: Object reference not set to an instance of an object. når jeg prøver det du skriver..
Avatar billede Slettet bruger
11. januar 2006 - 10:13 #9
Vis mig lige din kode some sætter det samt definitionen af Hyperlink i codebehind.

Du skal sætte det i fornindelse med OnLoad på page.
Avatar billede nat Nybegynder
11. januar 2006 - 10:48 #10
---HTML----
<ASP:DATAGRID id="datagrid1" runat="server" CssClass="dataGrid" EnableViewState="true" GridLines="None" AutoGenerateColumns="False" CellPadding="0">
<Columns>
<ASP:TemplateColumn HeaderText="Ordrenr.">
<ItemTemplate>
<ASP:Hyperlink id="HyperLink1" runat="server" Text='<%#DataBinder.Eval( Container, "DataItem.ID")%>' href="#"/>
</ItemTemplate>
</ASP:TemplateColumn>

-----CodeBehind------
protected System.Web.UI.WebControls.HyperLink Hyperlink1;


private void Page_Load(object sender, System.EventArgs e)
{   
           
    if (!Page.IsPostBack)
    {
        BindGrid();
        HyperLink1.Attributes.Add("onclick", "<%#ReturnUrl(DataBinder.Eval(Container, "DataItem.ID").ToString())%>",     "_blank", "status=nos,toolbar=no,menubar=no,location=no, resizable=yes, titlebar=no "); return false;' onMouseOver="window.status='NytVindue'; return true" onMouseOut="window.status=' '; return true");
    }

}
Avatar billede Slettet bruger
11. januar 2006 - 10:51 #11
<%#ReturnUrl(DataBinder.Eval(Container, "DataItem.ID").ToString())%>

skal du jo have erstattet af dem værdi det ville svare til.
Avatar billede nat Nybegynder
11. januar 2006 - 11:05 #12
ja, og det var ikke noget problem før end at jeg ville have en onclick event på.

Så jeg er ikke lige med på hvad du mener? Kna den ikke få værdien fra metoden?
Avatar billede Slettet bruger
11. januar 2006 - 11:10 #13
det her DataBinder.Eval(Container, "DataItem.ID").ToString())

Gør dybest set det at nåre Databinderen køre så henter den Id fra DataItem (DataItem er den elementtype som er i den collection som bliver bundet til datasource.

Du kunne jo også overveje ikke at anvende en asp:Hyperlink og så bare bruge et almindelig a-element (<a href=".....), hvis du ikke skal bruge serverside HyperLink funktionaliteten til noget, og det ser egentligt ikke sådan ud, så er det meget lettere bare at anvende et standard html element da du lettere kan sætte klient side hændelser på dem , altså med onclick=sjdsksjd
Avatar billede nat Nybegynder
11. januar 2006 - 11:33 #14
Jep, jeg prøvede med <a></a> og alt det der, og det var såmen også fint nok, men når jeg så klikkede på den kunne den ikke finde mine filer som den får fra metoden ReturnUrl, i stedet for at åbne f.eks. http://applikation/mappe1/mappe2/dokument.doc prøver den at åbne file////c:/intetpubwwwrootapplikationmappe1mappe2dokument.doc - og her kan den jo selvfølgelig ikke finde den, så der kommer en fejl dialogboks op
Avatar billede Slettet bruger
11. januar 2006 - 11:40 #15
Men hvad returnere din ReturnUrl da, du skal jo "bare" (ved det ikke er bare) have den til at skrive den rigtige URL - det tror jeg er lettere end det andet hvis jeg skal være ærlig.
Avatar billede nat Nybegynder
11. januar 2006 - 11:45 #16
Jamen, før jeg ville åbne i et nyt vindue uden parametre åbne det rigtige dokument, så det er ikke min ReturnUrl der er noget galt med. Det er bare som om at ved brug af <a> bliver det der returnes lavet om... altså at den fjerner /

ReturnUrl returnerer en url f.eks. c:/inetpub/wwwroot/mappe1/mappe2/dokument1.doc Men den får værdien fra fra linket og udskifter dokument1 alt efter hvad der står i linket..
Avatar billede nat Nybegynder
13. februar 2006 - 08:23 #17
Fik løst problemet, Kryptos smider du et svar?
Avatar billede Slettet bruger
13. februar 2006 - 08:25 #18
svar;)
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
Kurser inden for grundlæggende programmering

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