在绑定控件中求值

本文关键字:控件 绑定 | 更新日期: 2023-09-27 18:15:54

我知道这个问题已经回答过几次了,但它总是不是我需要的方式。

基本上我有这样的代码:

<Engine:WidgetSQLDataSource ID="DS_Hotel" runat="server" SelectCommand="site.GetHotelList" />
    <asp:Repeater ID="rp_GuestHotelInfo" runat="server" DataSourceID="DS_Hotel">
        <ItemTemplate>
            <% if (Convert.ToInt32(Eval("TreeID")) == PrimaryNavigation1.ParentID) { %>
            <a href="#" class="logo"><img width="226" height="68" src="<%# Eval("Logo") %>" alt="<%# Eval("HotelName") %>" /></a>
            <% } %>
        </ItemTemplate>
        </asp:Repeater>

我想做的是根据当前页面的父id更改徽标。

然而,我得到一个错误说:

数据绑定方法,如Eval()、XPath()和Bind(),只能是用于绑定控件的上下文中。

有什么办法可以解决这个问题吗?谢谢,T.J.

在绑定控件中求值

Repeater,至少在webform中,不支持"if"语句,相反,您可以使用"三元"操作符,例如:string src = (a==b) ?"平等":"景";所以你的代码可以这样替换:

    <ItemTemplate>
        <a href="#" class="logo">
        <img width="226" height="68" 
            src='<%# (Convert.ToInt32(Eval("TreeID")) == PrimaryNavigation1.ParentID) ? Eval("Logo") : "" %>'  
            alt="<%# Eval("HotelName") %>"
        />
        </a>
    </ItemTemplate>