2011-08-10 96 views
2

我有一個gridview列,其中有一列指向文件服務器上的pdf文件。我需要在旁邊有另一列,顯示pdf圖標。用戶應該能夠點擊圖標並從文件服務器啓動文件。在asp.net中顯示一個帶有href值的gridview列中的圖像圖標

我的代碼是:

<asp:GridView ID="gvInvoices" AutoGenerateColumns="false" runat="server" Font-Names="Arial" Font-Size="Small" Width="50%"> 
         <Columns> 
          <asp:TemplateField HeaderText="File Type"> 
           <ItemTemplate><img runat="server" src="Images/img_Pdf.gif" id="imgFileType" /></ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Name"> 
           <ItemTemplate><%#Eval("InvoiceNumber")%></ItemTemplate> 
          </asp:TemplateField> 
         </Columns> 
         </asp:GridView> 

我如何添加一個 「NavugateURL」 或HREF = 「」 到IMG?

回答

4

而不是使用HTML img控件,請嘗試使用ASP.Net服務器控件。 一個很好的選擇將是超鏈接控件:

相反的:

<img runat="server" src="Images/img_Pdf.gif" id="imgFileType" /> 

用途:

<asp:HyperLink ID="imgFileType" ImageUrl="Images/img_Pdf.gif" NavigateUrl="" runat="server">HyperLink</asp:HyperLink> 

只需設置你的NavigateUrl屬性。

+0

+爲簡單起見 –

1

您需要將您的圖標環繞錨標記,並使用DataBinding表達式Eval設置錨標記的href。這假定您的數據源字段「PDFPath」是絕對路徑。

<asp:GridView ID="gvInvoices" AutoGenerateColumns="false" runat="server" Font-Names="Arial" Font-Size="Small" Width="50%"> 
          <Columns> 
           <asp:TemplateField HeaderText="File Type"> 
            <ItemTemplate><a href='<%#Eval("PDFPath")%>'> <img runat="server" src="Images/img_Pdf.gif" id="imgFileType" /></a></ItemTemplate> 
           </asp:TemplateField> 
           <asp:TemplateField HeaderText="Name"> 
            <ItemTemplate><%#Eval("InvoiceNumber")%></ItemTemplate> 
           </asp:TemplateField> 
          </Columns> 
          </asp:GridView> 
+0

不起作用。該圖標顯示爲超鏈接文本值旁邊的實心圖標。 – Frank

1

RowDataBind事件看你的圖像控制內,並設置其NavigateUrl屬性

protected void gvInvoices_RowDataBound(object Sender , GridViewRowEventArgs e) 
{ 
     if(e.Row.RowType==DataRow) 
     { 
      HtmlControl icon = e.Row.FindControl("imgFileType") as HtmlControl; 
      icon.NavigateUrl = ((MyDataType)e.Row.DataRow).PDFPath; 
     } 
} 

注意它是自由手寫所以你會發現,你應該修正一些語法錯誤