如何使用图像替换Gridview列中的超链接,具体取决于列中的文本?

时间:2012-11-08 23:38:08

标签: c# asp.net image gridview hyperlink

问题几乎说明了一切。在我的aspx页面上我有一个GridView,在Columns下我有一堆BoundFields,其中一个是TemplateField

        <asp:TemplateField HeaderText = "Status">
            <ItemTemplate>
                <asp:HyperLink ID = "HyperLink1" runat = "server" Target = "_blank"
                    NavigateUrl = '<%# Eval("URL") %>'
                    Text = '<%#Eval("Status") %>'>
                </asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>

现在,我希望此超链接映射到不同的图像,具体取决于评估文本的内容。例如,“成功”会显示一个很大的笑脸,“失败”会显示一个皱眉脸,等等。我怎样才能做到这一点?

感谢您的光临。

3 个答案:

答案 0 :(得分:2)

您可以将图像放在超链接中,例如

<img src='/images/status/<%#Eval("Status") %>.jpg' />

并按名称为每个状态创建不同的图像。否则你可能不得不在DataBind事件上做点什么。

答案 1 :(得分:1)

试试这个

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink HyperLink1 = e.Row.FindControl("HyperLink1");
        if(SomeText == "Success")
          HyperLink1.NavigateUrl = "Url to Smiley";
        else
          HyperLink1.NavigateUrl = "Url to Frowney";
    }
}

答案 2 :(得分:0)

如果您尝试设置ImageUrl属性,我建议使用RowDataBound事件。处理程序方法可能类似于:

protected void questionsGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    DataSourceDataType row;
    HyperLink hyperLink1;

    if (e.Row.RowType == DataControlRowType.DataRow & e.Row.DataItem is DataSourceDataType)
    {
        row = (DataSourceDataType)e.Row.DataItem;
        hyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");

        hyperLink1.ImageUrl = (row.IsSuccess) ? "~/images/success.png" : "~/images/failure.png";
    }
}

我使用的另一个技巧是改变你绑定的数据对象,以获得一个指示要使用的URL的属性:

partial class DataSourceDataType
{
    public string SuccessImgURL
    {
        get
        {
            return (IsSuccess) ? "~/images/success.png" : "~/images/failure.png";
        }
    }
}

然后绑定到该属性。

注意:IsSuccess需要替换为您自己的字段名称或布尔条件 我经常将它与LINQ to SQL对象一起使用,因此可以使用分部类在单独的文件中添加属性。这样您就不必担心删除添加内容的LINQ to SQL工具了。