如何根据gridview中字段的值设置ImageUrl

时间:2012-02-01 17:01:36

标签: c# asp.net

我有以下代码行来评估值是真还是假,如果是真,它会显示图像,如果它是假的,它会显示不同的图像。

<itemTemplate>
<img alt="" id="Img1" 
 src='<%# MyAdmin.GetCheckMark((bool)DataBinder.Eval(Container.DataItem, "ShowImg"))%>' 
 runat="server" /></ItemTemplate>

我可以在c#中的后端代码中自定义Eval部分,然后将一个不同的变量传递给它,例如在C#中我想做

  bool ImgFlag = false;
  if(Entity.ShowImg == false && Entity.SomethingElse == true)
   {
      ImgFlag = true;
   }
  else if(Entity.ShowImg == false && Entity.SomethingElse == false)
  {  
      ImaFlag = false;
  }
  else
  {
      ImgFlag = true;
  }

然后我想在每行的GridView中使用ImgFlag而不是ShowImg,因此ImgFlag将确定要显示的标志..

或者有更好的方法吗?

问题在于,eval现在依赖于两件事......而不是像以前那样。

谢谢

2 个答案:

答案 0 :(得分:2)

这就是诀窍

<asp:TemplateField ShowHeader="False">
<ItemTemplate>
   <asp:Image runat="server" ImageUrlt='<%#(bool)Eval("bit_field")? "first.jpg":"second.jpg" %>'>  
  </asp:Image>
</ItemTemplate>

或者这个

<asp:TemplateField HeaderText="YourField">
<ItemTemplate>
    <asp:ImageButton runat="server" ImageUrl="True.jpg" Visible='<%# (bool)Eval("bit_field") %>' />
    <asp:ImageButton runat="server" ImageUrl="False.jpg" Visible='<%# !(bool)Eval("bit_field") %>' />
</ItemTemplate>     

this question

中找到


答案 1 :(得分:1)

Eval实际上返回一个属性,因此您可以为不同的属性调用它两次。

有点

MyAdmin.GetCheckMark2((bool)DataBinder.Eval(Container.DataItem, "ShowImg"),
         (bool)DataBinder.Eval(Container.DataItem, "SomethingElse"));

可能有帮助