0

if文を使ってテキストボックスやラベルを追加したいです。私の今後のデータ「-」または任意の価格値。データが「-」(空であることを意味します) の場合は、ラベルを使用します。または、データが "45 or 56 or etc" (価格を意味する) に等しい場合は、テキスト ボックスを使用します。ただし、以下のコードを実行しているときにエラーが返されます。

エラー: 「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 に答える