2012-12-04 11 views
1

我有一個ListView的ASP.NET應用程序。 ListView從DataTable獲取數據,我希望如果我的ListView建立itemtemplate,我有一個if子句用於更改內部的圖像。如何在ASP.NET ListView中創建If子句?

例如:

我的DataTable有一個名爲Enable的列。這可以有兩個值。第一個值是0,第二個是1.如果在我的列中是值0,我想要a.png,如果我有我的asp:圖像控件(在我的列表視圖)中的其他圖像。

這裏是我的aspx網站:

...

<ItemTemplate> 
     <tr onmouseover="this.style.backgroundColor='#87CEFA'" 
     onmouseout="this.style.backgroundColor='#ffffff'"> 
      <td align="left"><span class="spanpading"><asp:Label ID="lblname" Text='<%# Eval("NAME") %>' runat="server" /></span></td> 
      <td align="left"><span class="spanpading"><asp:Label ID="lblcompany" Text='<%# Eval("COMPANY") %>' runat="server" /></span></td> 
      <td align="left"><span class="spanpading"><asp:Label ID="lblVon" Text='<%# Eval("TIMEFROM") %>' runat="server" /></span></td> 
      <td align="left"><span class="spanpading"><asp:Label ID="lblBis" Text='<%# Eval("TIMETO") %>' runat="server" /></span></td> 
      <td align="left"><span class="spanpading"><asp:Label ID="lblErsteller" Text='<%# Eval("CREATOR") %>' runat="server" /></span></td> 
      <td align="left"><asp:ImageButton ID="imgDelete" runat="server" ToolTip="löschen" ImageUrl="images/delete.gif" CommandName="DeleteClick" CommandArgument='<%# Container.DataItemIndex %>' /></td> 
      <td align="left"><asp:ImageButton ID="imgUpdate" runat="server" ToolTip="ändern" ImageUrl="images/edit.gif" CommandName="UpdateClick" CommandArgument='<%# Container.DataItemIndex %>' /></td> 
      <td align="left"><asp:ImageButton ID="imgEmail" runat="server" ToolTip="Zugangsdaten senden" ImageUrl="images/send.gif" CommandName="SendClick" CommandArgument='<%# Container.DataItemIndex %>' /></td> 
      <% if() 
       { %> 

      <td align="left"><asp:Image ID="imgActive" runat="server" ToolTip="Aktiv" Width="25px" Height="25px" ImageUrl="images/yes.gif"/></td> 

      <% } %> 

      <td><asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>' Visible="False" ></asp:Label></td> 
     </tr> 
    </ItemTemplate> 

...

回答

3

你可以使用塊元素像例如<span>,使其在服務器上運行並根據數據綁定元素切換其可見性。

例如爲:

<span runat="server" Visible='<%# Eval("IsConditionTrue") %>'> 
    <!-- ... Place your conditionally visible tags here inside ... --> 
</span> 

如果無法計算結果爲一個條件,你也可以使用例如像更復雜的聲明

<span runat="server" 
     Visible='<%# (int)Eval("SomeValue")==1 && (bool)Eval("SomeOtherValue") %>'> 
    <!-- ... Place your conditionally visible tags here inside ... --> 
</span> 

最後到你具體的例子,我想你可以這樣做:

<span runat="server" Visible='<%# (int)Eval("Enable")==1 %>'> 
    <asp:Image ImageUrl="images/yes.gif" /> 
</span> 
<span runat="server" Visible='<%# (int)Eval("Enable")!=1 %>'> 
    <asp:Image ImageUrl="images/no.gif" /> 
</span> 

當然,Mhd. Yasseen's answer似乎是最短的爲您的情況:

<asp:Image ImageUrl='<%# (int)Eval("Enable")==1 ? "yes.gif" : "no.gif" %>' /> 

請注意,您必須在Image標記中添加runat="server"等其他屬性,就像在原始問題中一樣。我在上面的代碼中忽略了它們的可讀性。

+0

這是華匯我沒有得到一個錯誤,但我沒有看到圖片...我的圖片與名字的圖像文件夾中...是那很重要? – Tarasov

+1

好吧,你忘記runat =「服務器」 – Tarasov

+0

@Tarasov當然。你可以試試'「〜/ images/yes.gif」'(注意開頭的「〜」)。 –

1
if(((YourDataTable) Container.DataItem).Enable){ 
} 

所以你可以做:

<% if (((YourDataTable) Container.DataItem).Enable) 
     { %> 

      <td align="left"><asp:Image ID="imgActive" runat="server" ToolTip="Aktiv" Width="25px" Height="25px" ImageUrl="images/yes.gif"/></td> 

    <% } %> 
+0

我沒有可以使用的Container.DataItem – Tarasov

1
ImageUrl=<%# (bool)Eval(condition)? "a.png" : "b.png" %> 
1

我認爲,而不是在.aspx文件中這樣做,你應該處理ListView.ItemDataBound Event

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) 
    { 

     if (e.Item.ItemType == ListViewItemType.DataItem) 
     { 

      Image imgActive = (Image)e.Item.FindControl("imgActive"); 
      System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView; 
      string value = rowView["Enable"].ToString(); 
      if (value == "1") 
      { 
       imgActive.ImageUrl="~/images/imageA.gif"; 
      } 
      else 
      { 
       imgActive.ImageUrl="~/images/imageB.gif"; 
      } 
     } 
    }