手风琴的第一个窗格在部分回发时闪烁



我正在使用ASP。. NET手风琴控件,带有许多用于数据输入表单的窗格。在几个窗格中有一些UpdatePanels,因此这些面板中的一些控件可以被启用或禁用,以防止用户在他们在其他地方输入的值所禁止的字段中输入值。

这一切都工作得很好,但由于某种原因,在大约一半的情况下,当UpdatePanel回发被触发时(由指定的AsyncPostBack触发器),Accordion的第一个窗格会暂时展开和折叠。这给了你可怕的"闪烁"体验,当一个页面做一个完整的回发,这正是我试图避免使用UpdatePanels。

这个问题似乎与第一个窗格的内容无关-我试图完全删除第一个窗格,因此第二个窗格成为第一个,同样的事情发生了。

有人知道为什么会发生这种情况以及如何解决它吗?

已更新代码这是其中一个面板的例子。不要被表格的使用冒犯了——这是一个真实的表格,我使用它不仅仅是为了布局的目的!

<tr class="grouprow">
    <td>Transportation</td>
    <td><asp:RadioButtonList ID="rblTransportation" runat="server" RepeatDirection="Horizontal" SelectedValue='<%# Bind("AdmissionTransportation")%>' AutoPostBack="true" 
            OnSelectedIndexChanged="rblTransportation_SelectedIndexChanged" >
            <asp:ListItem Text="Unknown" Value="" />
            <asp:ListItem Text="Yes" Value="True" />
            <asp:ListItem Text="No" Value="False" />                                    
    </asp:RadioButtonList></td><td></td>
</tr>
<tr class="grouprow">
    <td>Transportation Duration</td>
    <td><asp:UpdatePanel ID="updTransportationHours" runat="server" UpdateMode="Conditional">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="rblTransportation" EventName="selectedindexchanged" />
            </Triggers>
            <ContentTemplate>
                <asp:TextBox ID="txtTransportationHours" runat="server" Text='<%# Bind("AdmissionTransportationHours")%>' CssClass="tinytextbox" />
                <label class="unit">Hours</label>
                <asp:RegularExpressionValidator ID="revTransportationHours" runat="server" ControlToValidate="txtTransportationHours" ValidationExpression="d{1,3}(.d{1,2})?"
                    ValidationGroup="Past30Days" ErrorMessage="Invalid format for Transporation Duration. Please enter in format 'xxx.xx', e.g. '3.25'" Display="Dynamic" 
                    CssClass="error" >*</asp:RegularExpressionValidator>
                <asp:RangeValidator ID="rvTransportationDuration" runat="server" ControlToValidate="txtTransportationHours" CssClass="error" ValidationGroup="Past30Days" type="Double"
                    ErrorMessage="The Transportation Duration cannot be more than 100" MinimumValue="0" MaximumValue="100" >*</asp:RangeValidator>
            </ContentTemplate>
    </asp:UpdatePanel></td><td></td>
</tr>

我相信您需要将您的rblTransportation RadioButtonList包装在UpdatePanel中。

由于该控件不在UpdatePanel中,因此它会导致完整的回发。

答案非常简单,尽管我现在太累了,想不出为什么它能工作。我只需要在RadioButtonLists和CheckBoxLists上设置ClientIDMode = AutoID,它们现在触发异步回发,而不是一个完整的回发。它们也不需要在自己的UpdatePanels中。

我从这个问题中得到了答案。

可以试试<asp:blablacontrol style="Display:none;"> </asp:control>吗modpanel也有同样的问题,这个代码解决了我的问题

最新更新