在gridview中使用带有图像域控件的超链接控件

时间:2010-04-25 20:13:02

标签: asp.net gridview

我有一个gridview,并且该gridview的列正在显示其路径存储在数据库中的图像&图像存储在我的网站内的语言环境文件夹中。我的问题是我想对图像使用超链接控件,这样当单击图像时它应该跳转到另一个页面。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

首先,您应该将数据绑定到网格(在代码隐藏中):

public override void DataBind()
{
    // you implementation of getting data
    yourGridId.DataSource = GetData();
    yourGridId.DataBind();
}

然后我建议您为图片使用模板字段:

<asp:gridview id="yourGridId"
    runat="server">
    <columns>
        <asp:templatefield headertext="An Image">
            <itemtemplate>
                <a href="pageWhereToGo.aspx">
                    <img src='<%# ResolveUrl((string)Eval("ImageUrl"))%>' />
                </a>            
            </itemtemplate>
        </asp:templatefield>
    </columns>
  </asp:gridview>

上面的代码假设数据库中图像的路径存储为来自应用程序的相对路径(例如~/assets/images/image1.jpg)或完整路径(例如http://www.contoso.com/assets/images/image1.jpg)。还假设您的数据源包含ImageUrl字段中的图像路径。

所以上面的示例是一个最简单的网格,其中包含一个asp:templatefield列:这是一个可点击的图片,在点击事件中转到pageWhereToGo.aspx页面。

有关Gridview列字段的更多信息,请访问here

答案 1 :(得分:0)

您也可以在GridView中使用TemplateFiled,而不是使用DataBound字段:

<asp:TemplateField HeaderText="SomeText" >
    <ItemTemplate>
        // Put any kind of .NET Code in here
        // you can access the data bound values like this:
        <%# Eval("NameOfPropertyOnDataBoundObject")%>
    </ItemTemplate>
    <ItemStyle CssClass="tworows"></ItemStyle>
</asp:TemplateField>