Asp.net GridView TemplateField中的条件图像规则
我需要根据GridView中的值在GridView列中显示一个红色/橙色/绿色图标。我已成功显示红色/绿色,但显示橙色图标时遇到问题。当两个值之间的差异在+/-5%之间时,需要显示黄色图标 我的红色/绿色工作代码如下:Asp.net GridView TemplateField中的条件图像规则,asp.net,gridview,templatefield,iif,Asp.net,Gridview,Templatefield,Iif,我需要根据GridView中的值在GridView列中显示一个红色/橙色/绿色图标。我已成功显示红色/绿色,但显示橙色图标时遇到问题。当两个值之间的差异在+/-5%之间时,需要显示黄色图标 我的红色/绿色工作代码如下: <asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Image ID="Image3" runat="server" Height="20px" ImageUrl='<%# I
<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>
我也尝试过用(^2)平方代替“绝对值”,但它也不起作用
有什么办法可以让它工作吗
谢谢你可以试试这个,看起来是IIF的2倍((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") %>'
“Eval(“B”),“~/Images/Icons/iGreen.png”,“~/Images/Icons/iRed.png”),“3”)%>”
我已经设法让它工作了。谢谢汉斯的帮助。如果有帮助,请参阅下面的代码:
注意,我添加了+0.00001以防止被零除。用另一个条件嵌套代码仍然会给我带来除法错误(可能是我做错了什么)
此外,在第2行中,我需要反转条件,其中A越小越好(绿色)
IIF(数学绝对值((评估(“A”)/(评估(“B”)+0.00001))-1)<0.05,
“~/Images/Icons/iOrange.png”,
IIF((CType(容器,GridViewRow).RowIndex=2),
IIF((评估(“A”)>评估(“B”),
“~/Images/Icons/iGreen.png”、“~/Images/Icons/iRed.png”
),
IIF((评估(“A”)<评估(“B”)),
“~/Images/Icons/iRed.png”、“~/Images/Icons/iGreen.png”
)
)
)
也许你应该试试数学。对于Math.Abs,我遇到了另一个错误:重载解析失败,因为没有可访问的“IIf”接受这个数量的参数。我设法使它与Math.Abs一起工作。谢谢你,汉斯
'<%# 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") %>'
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"
)
)
)