2012-09-03 17 views
5

mam tej tabeliJak otworzyć plik, klikając na hiperłącze

enter image description here

chcę kliknąć na link i pliku (niezależnie od pliku) zostanie otwarta w nowym oknie pop-up.

Oto mój kod:

<asp:Repeater ID="dokumente" runat="server"> 
    <ItemTemplate> 
     <tr> 
      <td><asp:HyperLink ID="HyperLink4" runat="server" Text='<%# Eval("DokuTyp") %>' NavigateUrl='file://<%# Eval("File") %>'></asp:HyperLink></td> 
      <td><%# Eval("Description")%></td> 
      <td><%# Eval("Date") %></td> 
      <td><%# Eval("File") %></td> 
     </tr> 
    </ItemTemplate> 
</asp:Repeater> 

Ale to nie działa z NavigateUrl. Czy ktoś może mi pomóc w tym lub jakikolwiek pomysł, jak to zrobić. Dzięki

+2

Odwołujesz się do kolumny "DokuTyp", która nie istnieje, zgodnie z zrzutem ekranu struktury tabeli. Dalej: "To nie działa" jest zazwyczaj najgorszym opisem błędu, mogę sobie wyobrazić. Po trzecie: Wskazanie pliku lokalnego na serwerze ze strony HTTP jest w większości przypadków błędne, chyba że korzystasz z przeglądarki na samym serwerze. –

+0

jaki problem lub błąd wystąpił? – SMK

+0

Uwe: Cześć, kolumna istnieje i nie ma żadnego błędu :) SMK: Cześć, nie wystąpił żaden problem ani błąd, po prostu nic się nie stało, gdy kliknąłem na link. Myślę, że NavigateUrl jest zdecydowanie błędny. – Ragnarsson

Odpowiedz

5

Plik: /// przeznaczony jest dla zasobów na własnym komputerze.

Aby otwierać pliki na serwerze, musisz połączyć się z adresami URL na serwerze. Zastosowanie:

HttpContext.Current.Request.ResolveUrl(pathOnServer); 

Zmień swój kod tak:

<asp:Repeater ID="dokumente" runat="server"> 
    <ItemTemplate> 
     <tr> 
      <td><asp:HyperLink ID="HyperLink4" runat="server" Text='<%# Eval("DokuTyp") %>' NavigateUrl='<%# HttpContext.Current.Request.ResolveUrl(Eval("File")) %>'></asp:HyperLink></td> 
      <td><%# Eval("Description")%></td> 
      <td><%# Eval("Date") %></td> 
      <td><%# Eval("File") %></td> 
     </tr> 
    </ItemTemplate> 
</asp:Repeater> 

gdzie serwer

+0

Występuje błąd "ResolveUrl nie jest członkiem System.Web.HttpRequest" – chamara

+0

Gdzie go używasz? Jest to metoda rozszerzenia dostępna dla kontroli. – nunespascal

1

Protokół "plik" otwiera plik na komputerze użytkownika. Chyba musisz przeczytać plik po stronie serwera i zadzwonić do Resposne.Write.

0

Jeśli chcesz odnaleźć pliku na serwerze można użyć Server.MapPath metody; "file: //" nie jest poprawnym adresem URL, jeśli chcesz znaleźć plik na serwerze

NavigateUrl=<%#Server.MapPath(DataBinder.Eval("File"))%> 
Powiązane problemy