Avatar billede anders_cp Nybegynder
20. juli 2010 - 14:40 Der er 4 kommentarer og
1 løsning

Hyperlink i gridview

Hejsa
Jeg har prøvet flere måder at lave hyperlink i et gridview på, men intet virker efter hensigten. Kan nogle hjælpe mig her?


aspx-filen
<asp:GridView BorderWidth="1px" AutoGenerateColumns="false"
AllowSorting="false" OnRowDataBound="GridViewAddFiles_RowDataBound"
Width="400px" ID="GridViewAddFiles" runat="server">
    <HeaderStyle CssClass="DataGridHeader" />
    <Columns>
    <asp:HyperLinkField 
        Target="_blank"
        DataNavigateUrlFields="FullURL"
        DataNavigateUrlFormatString ="{0}"
        Text="hej kaj"
    />

        <asp:BoundField DataField="SBfilename" HeaderText="Tilføjede filer" />
    </Columns>
</asp:GridView>


Måde 1)
        protected void GridViewAddFiles_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DataRowView dataRowView = (DataRowView)e.Row.DataItem;
                e.Row.Attributes.Add("style", "cursor:hand");
                e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor = 'Silver'");

                e.Row.Attributes.Add("onClick", "window.navigate('../../files/documents/240528.Ladies_&_Gentlemen_(Cover).jpg')");
            }
        }

Virker efter hensigten - BORTSET fra at jeg mangler at sætte en _blank-attr. på. Det er faktisk hele issuet.


Måde 2)
Følgende fra aspx-filen
<asp:HyperLinkField 
    Target="_blank"
    DataNavigateUrlFields="FullURL"
    DataNavigateUrlFormatString ="{0}"
    Text="hej kaj"
/>
databasefeltet FullURL er hentet fra databasekaldet:
    SELECT
    SB_Filename  AS SBfilename
    , SB_Path AS SBpath
    , SB_fileID AS FileID
    , '../../files/documents/SB/' + SB_Filename AS FullURL
    FROM SB_file

Den giver den åbner rigtigt i nyt vindue (_blank), men med url'en:
/files/documents/sb/test.jpg%20%20%20%20%20
Altså den rigtige url, men tilføjet med en masse %20

Måde 3)
At lægge en asp:hyplink-kontrol i et templatefield:
<asp:TemplateField>
    <ItemTemplate>
        <asp:HyperLink ID="HyperLinkDocument" runat="server"></asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>
Men jeg får IKKE fat i kontrollen ved at skrive dette:
HyperLink hl = (HyperLink)(GridViewAddFiles).FindControl("HyperLinkDocument");
hl.NavigateUrl = "wwww.dr.dk";
hl = null;

+ alle de andre måder jeg ikke lige kan genopfriske.

Hilfe.
Avatar billede mjdigital Nybegynder
20. juli 2010 - 15:41 #1
Avatar billede anders_cp Nybegynder
20. juli 2010 - 15:44 #2
jo tak. Det er måde 2) som er beskrevet i dit link. Det giver linket efterfulgt af en masse %20
Avatar billede janus_007 Nybegynder
20. juli 2010 - 19:55 #3
Om jeg lige ville gøre det sådan kan jo diskuteres, men med udgangspunkt i dit eksempel 2:

Prøv at gøre sådan her med dit db-kald:
SELECT
    SB_Filename  AS SBfilename
    , SB_Path AS SBpath
    , SB_fileID AS FileID
    , '../../files/documents/SB/' + rtrim(SB_Filename) AS FullURL
    FROM SB_file

Nu ved jeg heller ikke hvilken db du bruger, men det korte og det lange er at din DB_Filename skal trimmes.
Avatar billede anders_cp Nybegynder
21. juli 2010 - 10:51 #4
Hejsa
Det gjorde tricket!
Havde nok på fornemmelsen at det havde noget med for mange space-karakterer (%20) fra databasen, men vidste ikke der var en trim-funktion.

Du har svaret på mit spørgsmål og må gerne lægge et svar :-)

Jeg er nysgerrig efter at vide hvordan du ville have haft løst problemet smartere ;)
Avatar billede janus_007 Nybegynder
21. juli 2010 - 12:48 #5
Jeg ville nok rydde mine data op :)

Det hænger formodentligt sammen med at SB_Filename er deklareret som char(...) i databasen, den ville jeg ændre til nvarchar og så update

update SB_file set SB_Filename = rtrim(SB_Filename)
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