0

我想使用 if 语句添加文本框或标签。我即将到来的数据“-”或任何价格值。如果数据等于“-”(这意味着空......),使用标签。或者,如果数据等于“45 或 56 等”(表示价格),请使用文本框。但是在以下代码下运行时错误返回给我。

错误:“Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。-”在 if Eval 博客中......

         <td align="left">

                                <%  if (Eval("SERVICE_AMOUNT").ToString() != "-")
                                    { %>
                                 <asp:TextBox ID="priceTextBox" runat="server" Text='<%# FieldFormat(Eval("SERVICE_AMOUNT")) %>' AutoPostBack="true"></asp:TextBox>
                                 <%}
                                    else
                                    { %>
                                    <asp:Label runat="server" ID="lblServiceAmount" Text='<%# FieldFormat(Eval("SERVICE_AMOUNT")) %>'></asp:Label>
                                    <%} %>
                                </td>
4

1 回答 1

3

我建议您将两个控件都放在 .aspx 中,然后在 ItemDataBound 事件的代码隐藏中实现您的隐藏逻辑。

一个例子:

protected void RepeaterItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        string serviceAmount = DataBinder.Eval(e.Item.DataItem, "SERVICE_AMOUNT").ToString();

        var priceTextBox = e.Item.FindControl("priceTextBox") as TextBox;
        var lblServiceAmount = e.Item.FindControl("lblServiceAmount") as Label;

        priceTextBox.Visible = serviceAmount != "-";
        lblServiceAmount.Visible = !priceTextBox.Visible;

    }
}
于 2013-11-14T09:06:58.760 回答