我有一个隐藏了一组列的转发器,直到点击一个按钮显示它们。这样可以正常工作,直到再次单击该按钮,这会导致再次隐藏列。
我基本上希望它能够工作一次而不再工作(尽管我可能会清除/重置)。我已经在foreach循环中尝试了if语句,但没有运气。
以下是代码:
<asp:Repeater ID="rptQuote" OnItemCommand="rptQuote_ItemCommand" runat="server">
<ItemTemplate>
<p>
<span><%#Eval("Qty") %> x </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操作应该重新设置它。
对我做错了什么的想法?
干杯, 麻木
答案 0 :(得分:1)
在客户端使用JQuery会更容易。而不是使用Visible属性并在回发期间更改(高开销),使用样式属性隐藏隐藏的东西,然后使用JQuery来显示它。像这样......
<asp:Repeater ID="rptQuote" OnItemCommand="rptQuote_ItemCommand" runat="server">
<ItemTemplate>
<p>
<span><%#Eval("Qty") %> x </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" />
然后,您只需使用隐藏内容的class属性来查找它,并在按钮上单击一下事件......
$("#bt_showStuff").click(function() {
$(".hiddenClass").prop("visible", "visible");
} );
因此,这意味着,当您单击按钮时,JQuery将找到具有“hiddenClass”类的所有元素,并将其“可见”属性更改为“可见” - 您的页面应将其发送为“可见:隐;” - 这只会工作一次。一旦东西“可见”将其设置为“可见”再次无关紧要。您也可以将按钮本身隐藏为点击事件的一部分...
$("#bt_showStuff").click(function() {
$(".hiddenClass").prop("visible", "visible");
$("#bt_showStuff").fadeOut();
} );
这可以防止有人再次点击(现在无法使用)按钮。
(在你的代码示例中,我无法分辨你想要隐藏哪些内容。如果你能告诉我,我可以修改上面的代码以便完全正常运行)