asp.net
  • vb.net
  • 2012-01-04 78 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

    相關問題