我有以下代码行来评估值是真还是假,如果是真,它会显示图像,如果它是假的,它会显示不同的图像。
<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现在依赖于两件事......而不是像以前那样。
谢谢
答案 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>
中找到
答案 1 :(得分:1)
Eval实际上返回一个属性,因此您可以为不同的属性调用它两次。
有点
MyAdmin.GetCheckMark2((bool)DataBinder.Eval(Container.DataItem, "ShowImg"),
(bool)DataBinder.Eval(Container.DataItem, "SomethingElse"));
可能有帮助