asp.net
  • vb.net
  • 2012-01-04 39 views 0 likes 
    0

    使用I如果我试图改变基于条件的图像控制的图像URL里面下面的GridView是我的标记:GridView控件

    <asp:TemplateField HeaderText="Status"> 
        <ItemTemplate> 
         <asp:Image ID="Image1" runat="server" 
          ImageUrl='<%# IIf(CDate(Eval("startdate")) < CDate(Eval("expdate")),"~/iWebmallManager/Images/bullet_red.png", 
           "~/iWebmallManager/Images/bullet_green.png" %>' 
         /> 
        </ItemTemplate>             
        <HeaderStyle HorizontalAlign="Left" /> 
        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" /> 
    </asp:TemplateField> 
    

    的IIF语句没有工作。我不知道我在做什么的权利,请帮助

    +0

    什么框架? – 2012-01-04 13:44:26

    +0

    ASP.Net - framework 4.0 – 2012-01-04 13:49:40

    +1

    它已经解决了谢谢 - 我省略了最后一个关闭支架 – 2012-01-04 13:50:28

    回答

    0

    你应该做的是在codebehind,因为它增加了可读性,更容易调试:

    Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 
        If e.Row.RowType = DataControlRowType.DataRow Then 
         Dim rowView = DirectCast(e.Row.DataItem,DataRowView) 
         Dim Image1 = DirectCast(e.Row.FindControl("Image1"),Image) 
         Dim startdate = DirectCast(rowView("startdate"), Date) 
         Dim expdate = DirectCast(rowView("expdate"), Date) 
         If startDate < expdate 
          Image1.ImageUrl = "~/iWebmallManager/Images/bullet_red.png" 
         Else 
          Image1.ImageUrl = "~/iWebmallManager/Images/bullet_green.png" 
         End If 
        End If 
    End Sub 
    
    +0

    谢谢Tim我发现我的错误是它是IIf声明的右括号。 – 2012-01-04 13:54:10

    +1

    顺便说一句,你不需要再使用IIF了,因为三元运算符通过'IF'找到了进入VB.NET的路径:http://blogs.msdn.com/b/vbteam/archive/2008/03/11/ if-operator-a-new-and-improved-iif-sophia-salim.aspx如果第一部分已经为真(更快和更安全),则该语句的第二部分不会被排除。 – 2012-01-04 13:59:03

    +0

    感谢您提供此信息 – 2012-01-04 14:13:41

    相关问题