使隐藏的中继器列在C#中显得奇怪

时间:2013-04-19 16:14:28

标签: c# repeater

我有一个隐藏了一组列的转发器,直到点击一个按钮显示它们。这样可以正常工作,直到再次单击该按钮,这会导致再次隐藏列。

我基本上希望它能够工作一次而不再工作(尽管我可能会清除/重置)。我已经在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操作应该重新设置它。

对我做错了什么的想法?

干杯, 麻木

1 个答案:

答案 0 :(得分: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" />

然后,您只需使用隐藏内容的class属性来查找它,并在按钮上单击一下事件......

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

因此,这意味着,当您单击按钮时,JQuery将找到具有“hiddenClass”类的所有元素,并将其“可见”属性更改为“可见” - 您的页面应将其发送为“可见:隐;” - 这只会工作一次。一旦东西“可见”将其设置为“可见”再次无关紧要。您也可以将按钮本身隐藏为点击事件的一部分...

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

这可以防止有人再次点击(现在无法使用)按钮。

(在你的代码示例中,我无法分辨你想要隐藏哪些内容。如果你能告诉我,我可以修改上面的代码以便完全正常运行)