Avatar billede cuac Nybegynder
29. oktober 2003 - 11:46 Der er 8 kommentarer og
1 løsning

Åbning af fil via hyperlink

Jeg har filnavnet på forskellige filer stående i en kolonne i et datagrid, og har lavet disse til  hyperlink, dvs. kolonnen er lavet som en template.

se HTML:

Columns>
                    <asp:BoundColumn DataField="Analyse" HeaderText="Analyse"></asp:BoundColumn>
                    <asp:TemplateColumn HeaderText="Ascii fil">
                        <ItemTemplate>
                            <asp:Hyperlink runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.Asciifil") %>' Text='<%# DataBinder.Eval(Container, "DataItem.Asciifil") %>'></asp:Hyperlink>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Asciifil") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateColumn>
                    <asp:BoundColumn DataField="Kildefil" HeaderText="Kilde fil"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Referencefil" HeaderText="Reference fil"></asp:BoundColumn>
                </Columns>

Hvordan kan jeg sørge for at der søges efter filnavnet i et bestemt directory, med tilhørende undermapper når NavigateUrlén forsøges åbnet. Mit problem er at det kun virker når filerne ligger i samme bibliotek som min aspx side. Men jeg vil gerne have filerne placeret i et andet directory.

cuac
Avatar billede clausjul Nybegynder
29. oktober 2003 - 11:51 #1
Er det sådan:

<asp:Hyperlink runat="server" NavigateUrl='<%# "~/mappe/" + DataBinder.Eval(Container, "DataItem.Asciifil") %>' Text='<%# DataBinder.Eval(Container, "DataItem.Asciifil") %>'></asp:Hyperlink>

?
Avatar billede cuac Nybegynder
29. oktober 2003 - 12:44 #2
Det var ikke helt løsningen, men næsten. Mit problem er at nogle filer ligger i en mappe og nogle i en anden, men fælles for dem alle er at de vil kunne findes i mapper under K:\Datamappe\Resultater\

Håber du forstår clausjul, det du har svaret løser kun hvis filerne ligger i én bestemt mappe.

cuac
Avatar billede clausjul Nybegynder
29. oktober 2003 - 12:47 #3
Asp:HyperLink bruger URL-scheme, dvs. at alt under C:\Inetpub\wwwroot\<application>\ kan bruges til asp:hyperlink.

Du er nødt til at lave en

<asp:LinkButton OnClick="GetFiles" runat="server"><%# DataBinder.Eval(Container, "DataItem.Asciifil") %></asp:LinkButton>

Og så skal du i din kode lave en method og der kan du hente filen.

Hvis det var tilladt med den slags i asp:Hyperlink, så var det ET STORT SIKKERHEDSHUL!
Avatar billede cuac Nybegynder
29. oktober 2003 - 12:55 #4
OK, jeg forstår hvad du mener. Opret et svar, og du får dine point, kunne du ikke lige give et forslag til den metode som skal hente filen, så er jeg hurtigt videre.

cuac
Avatar billede clausjul Nybegynder
29. oktober 2003 - 12:59 #5
i din code-behind (C#)

<asp:LinkButton OnCommand="GetFiles" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.Asciifil") %>' runat="server"><%# DataBinder.Eval(Container, "DataItem.Asciifil") %></asp:LinkButton>


public void GetFiles(object sender, CommandEventArgs e) {

System.IO.File.Open("K:\Datamappe\Resultater\" + e.CommandArgument);



}
Avatar billede clausjul Nybegynder
29. oktober 2003 - 13:01 #6
Hov - jeg blev ikke færdig!
Avatar billede cuac Nybegynder
29. oktober 2003 - 13:04 #7
Hej Claus.

Stop lige inden du bruger for meget tid, jeg arbejder med Webmatrix, dvs uden code-behind, og i VB.Net, husk lige at oprette et svar.

Sorry
Avatar billede clausjul Nybegynder
29. oktober 2003 - 13:04 #8
<asp:LinkButton OnCommand="GetFiles" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.Asciifil") %>' runat="server"><%# DataBinder.Eval(Container, "DataItem.Asciifil") %></asp:LinkButton>


public void GetFiles(object sender, CommandEventArgs e) {

System.IO.FileStream fs = File.Open("K:\Datamappe\Resultater\" + e.CommandArgument,System.IO.FileMode.Open,System.IO.FileAccess.Read);

byte[] = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);

while (fs.Read(b,0,b.Length) > 0)
{
  Response.Write(temp.GetString(b)
}

fs.Close()

}

Jeg ved ikke hvad du vil med filen, men den giver dig et fingerpeg ;-)
Avatar billede cuac Nybegynder
29. oktober 2003 - 13:09 #9
OK - ikke helt hvad jeg skulle bruge , men point alligevel.
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