Avatar billede repsak Nybegynder
25. august 2004 - 21:21 Der er 24 kommentarer og
1 løsning

Skifte url i hyperlinkcolumn

Jeg har et datadrig med denne kolonne:
<asp:HyperLinkColumn Target="_self" DataNavigateUrlField="Klasse" DataNavigateUrlFormatString="show.aspx?class={0}" DataTextField="Klasse" DataTextFormatString="Vis">...

Værdien bliver hentet fra en database, men "DataNavigateUrlFormatString" modificeres via en metode før visning.

Pseudo:
DataNavigateUrlFormatString="show.aspx?class=ModifyString({0})"
hvor ModifyString() er navnet på min metode.

Hvordan kringler jeg den?
Avatar billede snepnet Nybegynder
25. august 2004 - 22:39 #1
Hej repsak, kan du ikke bare :
DataNavigateUrlFormatString='<%# String.Format("show.aspx?class={0}", ModifiString()) %>'

Eller har jeg misforstået det du spurgte om ?
Avatar billede snepnet Nybegynder
25. august 2004 - 22:51 #2
æhh... jeg tror faktisk ikke jeg er med på hvad det er du vil opnå - kan jeg få dig til at sende et eller andet der viser det resulterende link du gerne vil opnå, og så lige en detalje omkring hvad det er der bliver modificeret og hvordan ?
(beklager hvis jeg er lidt tung i det...)
Avatar billede repsak Nybegynder
25. august 2004 - 23:02 #3
det konkrete problem går ud på at jeg henter en 'class' (bare en simpel værdi) ud af databasen som skal lægges i en URL (vha hyperlinkcolum) - men i krypteret form. Derfor skal værdien igennem en Encrypt metode før den benyttes. (så klienten aldrig ser andet end den krypterede værdi)
Avatar billede snepnet Nybegynder
25. august 2004 - 23:06 #4
oki - men er det ikke bare det her du vil så :

værdi fra db : 111
link = show.aspx?class=111,
hvor 111 så skal krypteres, så du f.eks. ender med :

show.aspx?class=222

eller ?
Avatar billede repsak Nybegynder
25. august 2004 - 23:10 #5
næmli' ja - ligger du inde med idéen? :-)
Avatar billede snepnet Nybegynder
25. august 2004 - 23:26 #6
Jeg ville droppe HyperLinkColumn, og sætte en TemplateColumn ind istedet.
I den ville jeg så sætte en HyperLink, og binde på vanlig vis med et smut forbi en eller anden metode.

vil du have et eksempel ?
Avatar billede repsak Nybegynder
25. august 2004 - 23:33 #7
jeps ;-)
Avatar billede snepnet Nybegynder
25. august 2004 - 23:46 #8
Sorry... vores mailserver har det med at være lidt halvsløv, så nogle gange går der lidt tid inden jeg for besked.

Du kan gøre f.eks. sådan her :
<Columns>
    <asp:TemplateColumn HeaderText="Modificeret link">
        <ItemTemplate>
            <asp:HyperLink id=HyperLink1 runat="server" NavigateUrl='<%# String.Format("http://www.test.aspx?class={0}",GetModifiedClass()) %>' Text="test"></asp:HyperLink>
        </ItemTemplate>
    </asp:TemplateColumn>
</Columns>
Avatar billede snepnet Nybegynder
25. august 2004 - 23:48 #9
Normalt bikser jeg egentlig ikke selv så meget rundt i aspx-filen... Plejer at lave det "på bagsiden"... Hvad gør du normalt ? (det er mere hvis jeg skal skrive flere eksempler)
Avatar billede repsak Nybegynder
25. august 2004 - 23:52 #10
Det er lidt forskelligt... normalt synes jeg set er lettere at dele det op i model/view så jeg lader datagridet blive tegnet i aspx, men hvis der skal laves for meget lurifaks som her så ryger det ofte til C# koden ;-)
Avatar billede snepnet Nybegynder
25. august 2004 - 23:53 #11
ok :o)
(nu opdaterer jeg jævnligt siden... så det kan være det går lidt stærkere nu)
Avatar billede snepnet Nybegynder
26. august 2004 - 00:05 #12
altså bortset fra at du er smuttet :oD
Avatar billede repsak Nybegynder
26. august 2004 - 00:05 #13
dette spiller ikke helt (jeg har ikke arbejdet så meget med dette område såh jeg er lidt rådvild :-))
<asp:DataGrid id="datagrid" runat="server" GridLines="Horizontal" DataKeyField="Klasse" AutoGenerateColumns="False" OnItemDataBound="DataGridBind" Width="90%">
    <Columns>       
        <asp:TemplateColumn HeaderText="Modificeret link">
            <ItemTemplate>
                <asp:HyperLink id="HyperLink1" runat="server" NavigateUrl='<%# String.Format("http://www.test.aspx?class={0}",240) %>' Text="test"></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:BoundColumn DataField="Klasse" HeaderText="Klasse"></asp:BoundColumn>
    </Columns>
</asp:DataGrid>
Avatar billede snepnet Nybegynder
26. august 2004 - 00:12 #14
jamen dog ? - det forstår jeg ikke helt ... det virker fint nok her (men det kan du jo ikke bruge til så meget :o)

Jeg kan ikke lige se om der er forskel, men her er min i hvert fald.

<asp:HyperLink id=HyperLink1 runat="server" NavigateUrl='<%# String.Format("http://www.test.aspx?class={0}",25) %>' Text="test"></asp:HyperLink>
Avatar billede snepnet Nybegynder
26. august 2004 - 00:13 #15
hmm... kan stadig ikke se nogen forskel - hvad er det der ikke spiller ?
Avatar billede repsak Nybegynder
26. august 2004 - 00:18 #16
hehe belastende... jeg checker lige min kode igennem igen... :)
(jeg er på vej iseng så jeg svarer først her igen i overmorgen)
Tak for hjælp til nu
Avatar billede snepnet Nybegynder
26. august 2004 - 00:22 #17
bare iorden... jeg ved ikke hvor meget tid jeg har i løbet af dagtimerne - men bare skrive, jeg skal nok prøve at få skrevet tilbage :o)
Mvh
Avatar billede repsak Nybegynder
28. august 2004 - 15:38 #18
Back...
Det virkede også - jeg havde bare en OnItemDataBound-metode som lavede forvirring ;-)
Svar.
Avatar billede repsak Nybegynder
28. august 2004 - 15:42 #19
...btw: hvordan skriver jeg det du skrev i codebehind? (ved du det?)
Avatar billede snepnet Nybegynder
29. august 2004 - 00:17 #20
hvis du abbonerer på ItemDatBound i forvejen, kan du skrive det f.eks. sådan her :

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
  HyperLink hl = (HyperLink)e.Item.FindControl("HyperLink1");
  hl.NavigteUrl = String.Format("http://www.test.aspx?class={0}", GetModified());
}

GetModified() giver så stadig et eller andet tilbage tænker jeg :o)

mvh
Avatar billede snepnet Nybegynder
29. august 2004 - 00:22 #21
hov - og et svar skal du da få :o)
Avatar billede repsak Nybegynder
29. august 2004 - 08:01 #22
Point recieved. Men hvordan omskriver jeg "DataBinder.Eval(Container.DataItem, "Klasse")" når mit udgangspunkt ser sår'n ud:

<asp:HyperLink id="HyperLink1" runat="server" NavigateUrl='<%# String.Format("http://www.test.aspx?class={0}",Get(DataBinder.Eval(Container.DataItem, "Klasse").ToString())) %>' Text="test"></asp:HyperLink>
Avatar billede snepnet Nybegynder
29. august 2004 - 10:07 #23
Ahhh.... sorry :o)

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
  HyperLink hl = (HyperLink)e.Item.FindControl("HyperLink1");
  hl.Text = "Test";
  string klasse = ((DataRowView)e.Item.DataItem)["klassekolonne"].ToString();
  hl.NavigteUrl = String.Format("http://www.test.aspx?class={0}", GetModified(klasse));
}

Var det den du var ude efter ?
Avatar billede repsak Nybegynder
29. august 2004 - 22:59 #24
Det er stærke sager :-D
Jeg skulle modificere det lidt, men du kunne jo heller ikke vide præcist hvad jeg var ude efter. Tak for hjælpen.
Avatar billede snepnet Nybegynder
29. august 2004 - 23:48 #25
Det var i hvert fald så lidt :o)
mvh
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