0

ボタンをクリックして表示するまで、列のグループが非表示になっているリピーターがあります。ボタンをもう一度クリックすると、列が再び非表示になるまで、これは正常に機能します。

私は基本的にそれを一度だけ機能させたいと思っています(ただし、クリア/リセットを入れることはできます)。foreach ループで if ステートメントなどを試してみましたが、うまくいきませんでした。

コードは次のとおりです。

<asp:Repeater ID="rptQuote" OnItemCommand="rptQuote_ItemCommand" runat="server">
    <ItemTemplate>
        <p>
            <span><%#Eval("Qty") %> x&nbsp;</span> 
            <span class="bolist120"><%#Eval("product") %> bin</span>
            <asp:Label ID="lblBinPrices" Visible="false">@ <%# string.Format("{0:c}",Eval("Value")) %> = <%# string.Format("{0:c}",Eval("Total")) %></asp:Label> 
        </p>
    </ItemTemplate>
</asp:Repeater>

<asp:Button ID="btnCalculate" runat="server" OnClick="BtnCalc" />

onclick コードは次のとおりです。

protected void BtnCalc(object sender, EventArgs e)
{
    foreach (RepeaterItem item in rptQuote.Items)
    {
        var label = (Label)item.FindControl("lblBinPrices");
        label.Visible = true;
    }

}

label.Visible = true;を失っているのではないかと思っていました。次のクリックで、しかし確かに onclick アクションはそれを再び設定する必要があります。

私が間違っていることについて何か考えはありますか?

乾杯、麻痺

4

1 に答える 1

1

これは、クライアント側で JQuery を使用する方が簡単です。Visible プロパティを使用してポストバック中にそれを変更する (オーバーヘッドが高い) 代わりに、スタイル プロパティを使用して非表示のものを非表示にし、JQuery を使用して表示します。このようなもの...

<asp:Repeater ID="rptQuote" OnItemCommand="rptQuote_ItemCommand" runat="server">
    <ItemTemplate>
        <p>
            <span><%#Eval("Qty") %> x&nbsp;</span> 
            <span class="bolist120"><%#Eval("product") %> bin</span>
            <asp:Label ID="lblBinPrices" Visible="false">@ <%# string.Format("{0:c}",Eval("Value")) %> = <%# string.Format("{0:c}",Eval("Total")) %></asp:Label> 
        </p>
    </ItemTemplate>
</asp:Repeater>

<input type="button" id="bt_showStuff" value="Click to show stuff" />

次に、隠し要素のクラスプロパティを使用してそれを見つけ、ボタンのクリックイベントを使用します...

$("#bt_showStuff").click(function() { 
    $(".hiddenClass").prop("visible", "visible");
} );

つまり、ボタンをクリックすると、JQuery は「hiddenClass」クラスを持つすべての要素を検索し、それらの「visible」プロパティを「visible」に変更します。ページは「visible: hidden;」として送信する必要があります。- これは一度だけ機能します。ものが「表示」されると、再び「表示」に設定しても問題ありません。クリックイベントの一部としてボタン自体を非表示にすることもできます...

$("#bt_showStuff").click(function() { 
    $(".hiddenClass").prop("visible", "visible");
    $("#bt_showStuff").fadeOut();
} );

これにより、誰かが (現在は機能していない) ボタンを再度クリックするのを防ぐことができます。

(あなたのコード サンプルでは、​​どの部分を隠したいのかわかりません。教えていただければ、上記のコードを完全に機能するように修正できます)

于 2013-04-19T16:58:20.977 に答える