2012-09-03 36 views
5

Tôi có bảng nàyLàm thế nào để mở một tập tin bằng cách nhấp vào HyperLink

enter image description here

Tôi muốn nhấp vào liên kết và tập tin (bất cứ tập tin) sẽ được mở ra trong một cửa sổ pop-up mới.

Đây là mã của tôi:

<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> 

Nhưng nó không làm việc với NavigateUrl. Bất cứ ai có thể giúp tôi về điều này hay bất kỳ ý tưởng làm thế nào để làm điều này. Cảm ơn

+2

Bạn đang tham chiếu đến cột "DokuTyp" không tồn tại, theo ảnh chụp màn hình của cấu trúc bảng. Tiếp theo: "Nó không hoạt động" thường là mô tả lỗi tồi tệ nhất, tôi có thể tưởng tượng. Thứ ba: Trỏ tới tệp máy chủ cục bộ từ trong trang HTTP, hầu hết là sai, trừ khi bạn đang sử dụng trình duyệt trên chính máy chủ. –

+0

vấn đề hoặc lỗi nào đã xảy ra? – SMK

+0

Uwe: Xin chào, cột này tồn tại và không có lỗi mặc dù :) SMK: Xin chào, không có sự cố hoặc lỗi xảy ra, không có gì xảy ra khi tôi nhấp vào liên kết. Tôi nghĩ NavigateUrl chắc chắn là sai. – Ragnarsson

Trả lời

5

Tệp: /// là dành cho tài nguyên trên máy của riêng bạn.

Để mở tệp trên máy chủ, bạn sẽ phải liên kết đến url trên máy chủ. Sử dụng:

HttpContext.Current.Request.ResolveUrl(pathOnServer); 

Thay đổi mã của bạn như thế này:

<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> 

đâu server

+0

Tôi gặp lỗi "ResolveUrl không phải là thành viên của System.Web.HttpRequest" – chamara

+0

Bạn đang sử dụng nó ở đâu? Đây là một phương pháp mở rộng có sẵn cho điều khiển. – nunespascal

1

Giao thức "tệp" mở tệp trong máy tính người dùng. Tôi đoán bạn phải đọc tệp ở phía máy chủ và gọi Resposne.Write.

0

Nếu bạn muốn tìm tập tin trên máy chủ của bạn có thể sử dụng phương pháp Server.MapPath; "file: //" không đúng url nếu bạn muốn tìm tệp trên máy chủ

NavigateUrl=<%#Server.MapPath(DataBinder.Eval("File"))%> 
Các vấn đề liên quan