错误:数据绑定方法(如Eval(),XPath()和Bind())只能在转发器控件中的数据绑定控件的上下文中使用

时间:2014-06-04 05:40:21

标签: asp.net eval repeater

我收到以下错误

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control

但我正在尝试将我的代码编写为ASP.NET REPEATER Control

<%if (Eval("IsBreakPoint") == "1")
    { %>
        <tr>
            <td>
                <asp:Label ID="lblCategory" runat="server" Text='<%#Eval("Category") %>'></asp:Label>
            </td>
            <td colspan="27">
            </td>
       </tr>
    <%} %>

请帮忙

4 个答案:

答案 0 :(得分:11)

<% if %>语句不支持数据绑定。

对于条件显示,我总是尝试数据绑定到单个服务器控件的Visible属性。

在像您这样涉及标记块(而不是单个服务器控件)的情况下,我将该块包装在<asp:PlaceHolder>控件中,如下所示:

<asp:PlaceHolder ID="CategoryPlaceHolder" runat="server" Visible='<%# Eval("IsBreakPoint") == "1") %>'>

    <tr>
        <td>
            <asp:Label ID="lblCategory" runat="server" Text='<%#Eval("Category") %>'></asp:Label>
        </td>
        <td colspan="27">
        </td>
   </tr>

</asp:PlaceHolder>

或者,如果您没有真正使用该标签服务器端:

<asp:PlaceHolder ID="CategoryPlaceHolder" runat="server" Visible='<%# Eval("IsBreakPoint") == "1") %>'>

    <tr>
        <td>
            <%# Eval("Category") %>
        </td>
        <td colspan="27">
        </td>
   </tr>

</asp:PlaceHolder>

或者更可读:如果您可以为Repeater定义ItemType属性,那么您将在设计时获得强类型和Intellisense(这将是我推荐的方法):

<asp:PlaceHolder ID="CategoryPlaceHolder" runat="server" Visible='<%# Item.IsBreakPoint == "1") %>'>

    <tr>
        <td>
            <%# Item.Category %>
        </td>
        <td colspan="27">
        </td>
   </tr>

</asp:PlaceHolder>

当表达式包含双引号时,请注意在Visible值周围使用单引号。 (啊,因为你已经使用了Label.Text属性。)

答案 1 :(得分:1)

得到答案......而且有效......

   <%#(Eval("IsBreakPoint")) == "1" ? Eval("Category", "<tr bgcolor:#D4FFC4><td colspan='28'><b>{0}</b></td></tr>") : ""%>

答案 2 :(得分:0)

尝试将其更改为<%#DataBinder.Eval(Container.DataItem,"field")%>

答案 3 :(得分:0)

  

我们不能使用条件方法,如果.. Else switch ... Case in   DataList ......

<%if (Eval("IsBreakPoint") == "1")

使用

<tr>
        <td>
            <asp:Label ID="lblCategory" runat="server" Text='<%#Eval("Category") %>' visible="<# Eval("IsBreakPoint")==1 "></asp:Label>
        </td>
        <td colspan="27">
        </td>
   </tr>