在ASP GridView列中根据值显示图像

5
我有一个GridView,其中一个模板字段是ASP图像服务器标记。我想在这个GridView中显示一张图片,但基于我在数据绑定时获取的值。
因此,每一行都可以有不同的值,并且根据这些值,我需要显示不同的图片。我尝试调用一个JavaScript函数GetImage()并将我在数据绑定时获取的值传递给该函数。但是,我无法使其正常工作。
 <Columns>
      <asp:TemplateField HeaderText="<%$Resources:LocalizedText,LabelStatus%>">
           <ItemTemplate>
                <asp:Image ID="imgStatus" runat="server" CssClass="label" src="GetImage(<%#Eval(<%# Bind("Status_value")  %>) %>)"/>
           </ItemTemplate>
      </asp:TemplateField>
  </Columns>

Javascript函数 -

function GetImage(value)
{
    if (value == 1)
    {
        return "../Images/act_green.gif";
    }
    else
    {
        return "../Images/act_red.gif";
    }
}

我在这里做错了什么?我该如何修复它?谢谢。

你能展示已渲染的HTML输出吗? - msms
2个回答

8

除非您有其他未提及的需求,否则没有必要使用JavaScript,您可以在服务器上完成所有操作。

将您的asp:image标签更改为以下内容:

<asp:Image ID="imgStatus" runat="server" CssClass="label" ImageURL='<%# GetImage((int)Eval("Status_Value")) %>' />

在你的代码后台,放置以下内容:
public static string GetImage(int value)
{
    if (value == 1)
    { 
        return "../Images/act_green.gif";
    }
    else
    {
        return "../Images/act_red.jpg";
    }
}

完成了。


我无法使用Bind或Eval将Image服务器标记的src属性。根据您的答案,我改用了ImageURL属性,并在我的数据源(代码后台)中相应地操作了数据。谢谢。 - pavanred

1

您的GetImage函数未被执行。

请参考: IMG SRC标签和JavaScript


服务器端代码可以在不使用JS的情况下返回图像路径。


嗯,有道理。但是,你有什么办法可以解决这个问题吗?非常感谢任何帮助。 - pavanred
你可以不使用任何JavaScript来完成它。 - msms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接