我有一个gridview列,其中有一列指向文件服务器上的pdf文件。我需要在这旁边有另一列,显示pdf图标。用户应该能够单击图标并从文件服务器启动文件。
我的代码是:<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 ?
与其使用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>
您需要将您的图标围绕锚标记,并使用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>
在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;
}
}
注意这是自由书写,所以你可能会发现一些语法错误,你应该修复