【发布时间】:2016-01-02 23:36:41
【问题描述】:
我在一个页面上有一个引导 3.x 手风琴(折叠),我试图让用户能够添加/编辑大量信息而无需大量滚动。其中一些信息取决于其余信息,因此我在其中一个手风琴选项卡中有一个 UpdatePanel。要么更新面板没有正常工作,要么就是在其他方面无法很好地与手风琴配合使用。
这是基本的手风琴代码:
<div class="panel-group" id="ccAccordion" role="tablist" aria-multiselectable="true">
<asp:Panel ID="pnlAddress" runat="server" class="panel panel-default">
<div class="panel-heading" role="tab" id="billAddressHeading">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#ccAccordion" href="#billToAddressTab" aria-expanded="false" aria-controls="billToAddressTab">
<asp:Literal ID="BillToAddressLabelTxt" runat="server" Text="Bill Address" />
</a>
</h4>
</div>
<div id="billToAddressTab" class="panel-collapse collapse" role="tabpanel" aria-labelledby="billAddressHeading">
<div class="panel-body">
<!-- Other controls -->
</div>
</div>
</asp:Panel>
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="thirdPartyHeading">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#ccAccordion" href="#thirdPartyTab" aria-expanded="false" aria-controls="thirdPartyTab">
<asp:Literal ID="ThirdPartyShippingLabelTxt" runat="server" Text="Shipping Accounts" />
</a>
</h4>
</div>
<div id="thirdPartyTab" class="panel-collapse collapse" role="tabpanel" aria-labelledby="thirdPartyHeading">
<div class="panel-body">
<asp:UpdatePanel runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAddShipAccount" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnSaveSABA" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnAddShipAccountNo" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Button ID="btnAddShipAccount" runat="server" CssClass="btn btn-success" Text="Add New Shipping Account"
OnClick="btnAddShipAccount_Click" /><!-- moved from inside panel -->
<asp:Panel ID="pnlBranchShipping" runat="server" DefaultButton="btnSaveSABA">
<div class="panel panel-default">
<div class="controls">
<div class="form-group">
<!-- Other controls -->
</div>
<asp:panel ID="pnlAddEditAcct" CssClass="controls" runat="server" Visible="false">
<!-- Other controls -->
<div>
<asp:LinkButton ID="btnSaveSABA" Text="Save" runat="server" ValidationGroup="vgSAB" OnClick="btnSaveSABA_Click"
CssClass="btn btn-default" />
</div>
<div class="form-group">
<asp:Button ID="btnAddShipAccountNo" runat="server" CssClass="btn btn-default" Text="Add Shipping Account" OnClick="btnAddShipAccountNo_Click"
ValidationGroup="vgShipAccount" />
</div>
</asp:panel>
</div>
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="vatHeading">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#ccAccordion" href="#vatTab" aria-expanded="false" aria-controls="vatTab">
<asp:Literal ID="VatNumberLabelTxt" runat="server" Text="Tax Ids" />
</a>
</h4>
</div>
<div id="vatTab" class="panel-collapse collapse" role="tabpanel" aria-labelledby="vatHeading">
<div class="panel-body">
<asp:Panel ID="pnlTaxId" runat="server" class="form-group" DefaultButton="btnAddTaxId">
<!-- Other controls -->
</asp:Panel>
</div>
</div>
</div>
</div>
当您单击其中的任何按钮时会发生什么情况,它基本上会刷新整个页面并且手风琴会恢复到其原始状态,但是当您打开按钮时,按钮所做的事情(例如显示其他字段)是可见的再次打开标签。
更新
我今天意识到上面的全部代码都在 MasterPage 中的另一个 UpdatePanel 中。此 UpdatePanel 具有所有默认设置,因此我上面代码中的回发触发了父级。我想要解决这个问题,我将不得不改变整个表单的运行方式。
【问题讨论】:
-
你可以发布运行时 HTML(源代码)吗?我知道 ASP,但我不认为您希望我打开 VS、创建解决方案、创建自定义控件、编写后端代码、注入引导程序、调试并返回解决方案,是吗?大声笑 :) 如果您在 CODEPEN 或 JFiddle 中发布 HTML 会容易得多
-
我把它放在 jsfiddle 中,但问题并没有在那里发生,因为回发 javascript 由于缺少底层的 ASP.NET 代码而被破坏。使用更多运行时标记和 javascript 的另一次尝试导致回发发生,但由于缺少后端,没有再次返回。也许我只是误解了 UpdatePanel 应该如何工作。
标签: asp.net twitter-bootstrap webforms