0

GridView の値に基づいて、GridView 列内に赤/オレンジ/緑のアイコンを表示する必要があります。赤/緑を表示することはできましたが、オレンジ色のアイコンを表示するのに問題があります。2 つの値の差異が +/- 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.

'abs' (絶対値) の代わりに (^2) 二乗を使用しようとしましたが、どちらも機能しません。

これを機能させる方法についてのアイデアはありますか?

ありがとう

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 に答える