0

问题几乎说明了一切。在我的 aspx 页面上,我有一个 GridView,在 Columns 下,我有一堆 BoundField,其中一个是 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>

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

感谢您的关注。

4

4 回答 4

2

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

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

只需按名称为每个状态制作不同的图像。否则,您可能必须对 DataBind 事件执行一些操作。

于 2012-11-08T23:57:00.577 回答
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";
    }
}
于 2012-11-08T23:57:12.657 回答
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 工具会删除您添加的内容。

于 2012-11-09T02:10:22.513 回答
0
HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");

    switch (HyperLink1.Text)
        {
             case "Completed":
                  HyperLink1.ImageUrl = "Images\\Success.png";
                  HyperLink1.ToolTip = "Completed";

ETC

ToolTip 属性映射到图像的替代文本。

感谢codingbiz让我开始。

于 2012-11-09T01:36:05.143 回答