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" />

这是点击代码:

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”类的元素,并将它们的“可见”属性更改为“可见”——您的页面应该将其发送为“可见:隐藏;” - 这只会工作一次。一旦这些东西“可见”,再次将其设置为“可见”就无关紧要了。您还可以隐藏按钮本身作为点击事件的一部分......

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

这将阻止某人再次单击(现在无法使用)按钮。

(在您的代码示例中,我不知道您要隐藏哪些内容。如果您能告诉我,我可以将上面的代码修复为功能齐全)

于 2013-04-19T16:58:20.977 回答