我需要根据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)平方但它也不起作用。
关于如何让这个工作的任何想法?
由于
答案 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"
)
)
)