【问题标题】:Eval in a Databinding Control数据绑定控件中的 Eval
【发布时间】:2014-07-31 15:48:34
【问题描述】:

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

基本上我有这个代码:

<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.

【问题讨论】:

  • 与其尝试过滤模板中的项目,不如在后面的代码中对实际数据源执行过滤。

标签: c# html asp.net


【解决方案1】:

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>

【讨论】:

  • 非常感谢!这个答案正是我想要的。我也使用相同的概念来隐藏非活动的!非常感谢
猜你喜欢
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 2018-06-21
  • 2012-12-10
  • 2011-02-04
  • 2012-05-02
  • 1970-01-01
  • 2016-02-13
相关资源
最近更新 更多