2

我有一个带有 ListView 的 ASP.NET 应用程序。ListView 从 DataTable 获取数据,如果我的 ListView 构建 itemtemplate 我有一个用于更改内部图像的 if 子句,我想要。

例如:

我的 DataTable 有一个名为 Enable 的列。这可以有两个值。第一个值为 0,第二个值为 1。如果在我的列中是值 0,我想要 a.png,如果我的 asp:image 控件(在我的列表视图中)中有 1 个其他图像。

这是我的 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>

...

4

4 回答 4

4

您可以使用像 eg 这样的块元素<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 的回答似乎是最短的:

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

请注意,您必须像在原始问题中一样runat="server"Image标签添加其他属性。为了便于阅读,我在上面的代码中省略了它们。

于 2012-12-04T12:59:02.210 回答
1
ImageUrl=<%# (bool)Eval(condition)? "a.png" : "b.png" %>
于 2012-12-04T13:03:16.030 回答
1

我认为您应该处理 .aspx 文件,而不是在 .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"; 
            }
        }
    }
于 2012-12-04T13:11:33.740 回答
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>

     <% } %>
于 2012-12-04T12:58:44.603 回答