GridView TemplateField中的条件图像规则

时间:2013-10-09 08:19:30

标签: asp.net gridview templatefield iif

我需要根据GridView中的值在GridView列中显示红色/橙色/绿色图标。我设法显示红色/绿色,但我无法显示橙色图标。当两个值之间的差异在+/- 5%之间时,需要出现黄色图标。

我的红色/绿色工作代码如下:

<asp:TemplateField HeaderText="">
 <ItemTemplate>
  <asp:Image ID="Image3" runat="server" Height="20px" ImageUrl='<%# 
  IIF((CType(Container,GridViewRow).RowIndex =2),
    IIF((Eval("A") > Eval("B")),
    "~/Images/Icons/iGreen.png", "~/Images/Icons/iRed.png"),
     IIF((Eval("A") > Eval("B")),
     "~/Images/Icons/iRed.png", "~/Images/Icons/iGreen.png")) %>' Width="20px" />
 </ItemTemplate>
</asp:TemplateField>

我的非工作代码如下:

<asp:TemplateField HeaderText="">
 <ItemTemplate>
  <asp:Image ID="Image3" runat="server" Height="20px" ImageUrl='<%# 
  IIF((CType(Container,GridViewRow).RowIndex =2),
   IIF( abs((Eval("A") / Eval("B"))-1) < 0.05 ,
   "~/Images/Icons/iOrange.png",
    IIF((Eval("A") > Eval("B")),
    "~/Images/Icons/iGreen.png", "~/Images/Icons/iRed.png"),
     IIF((Eval("A") > Eval("B")),
     "~/Images/Icons/iRed.png", "~/Images/Icons/iGreen.png"))) %>' Width="20px" />
 </ItemTemplate>
</asp:TemplateField>

使用上面的代码我收到以下错误:

'abs' is not declared. It may be inaccessible due to its protection level.

我尝试使用aslo而不是'abs'(绝对值)来使用(^ 2)平方但它也不起作用。

关于如何让这个工作的任何想法?

由于

2 个答案:

答案 0 :(得分:0)

你可以尝试这个,看起来像2次IIF((Eval(“A”)&gt; Eval(“B”)),我删除了一个

'<%# IIF((CType(Container,GridViewRow).RowIndex =2), IIF( Math.Abs((Eval("A") / Eval("B"))-1) < 0.05 ,"~/Images/Icons/iOrange.png",IIF(Eval("A") > Eval("B"), "~/Images/Icons/iGreen.png", "~/Images/Icons/iRed.png")),"3") %>'

答案 1 :(得分:0)

我设法让它发挥作用。谢谢汉斯的帮助。如果有人帮助,请参阅下面的代码:

请注意,我添加了A +0.00001以防止除零。用另一个条件嵌套代码仍然给我分区错误(也许我做错了什么)

此外,在行索引2中,我需要反转条件,其中A越小越好(绿色)

IIF( Math.Abs((Eval("A") / (Eval("B")+0.00001))-1) < 0.05, 
  "~/Images/Icons/iOrange.png",
  IIF((CType(Container,GridViewRow).RowIndex =2),
    IIF((Eval("A") > Eval("B")),
    "~/Images/Icons/iGreen.png", "~/Images/Icons/iRed.png"
    ),
    IIF((Eval("A") < Eval("B")),
     "~/Images/Icons/iRed.png", "~/Images/Icons/iGreen.png"
    )
  )
 )