我收到以下错误
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> <%} %>
请帮忙
解决方法
<%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属性.)