0

我需要根据 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.

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

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

谢谢

4

2 回答 2

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"
    )
  )
 )
于 2013-10-09T11:00:19.213 回答
0

你可以试试这个,看起来像 2 次 IIF((Eval("A") > 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") %>'
于 2013-10-09T09:53:24.170 回答