jQuery 手风琴字段在面板可见时不会刷新

问题描述 投票:0回答:0

我有一个 ASPX 页面,其中包含一个定义为 jQuery 手风琴的面板,该面板在加载页面时开始隐藏。单击面板应该会刷新其中的值。

这里是相关的ASPX:

<div class="xPrimaryPanel" >
    <div class="xPrimaryPanelBanner" id="MainPanel">Select Position</div>
    <div class="xContainer">
        <div class="xSecondaryPanel">
            <div id="Tier1Panel" class="xPrimaryPanel">
                <div id="1" class="xPrimaryPanelBanner">Tier 1 Positions</div>
                <div class="xContainer">
                    <asp:UpdatePanel runat="server" ID="update1">
                        <ContentTemplate>
                            <asp:Label runat="server" ID="Tier1Refreshes" />
                            <asp:Button runat="server" Style="display: none" ID="btnNew1" Text="get Tier 1 data" OnClick="PositionControlT1_Click" />
                            <uc:PositionsControl2 ID="PositionsControlT1" runat="server" TierTest2="1" />
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </div>
            </div>
        </div>
    </div>
</div>

<script type="text/javascript">
    window.addEventListener(
        "message",
        (event) => {
            if (event.data == "Refresh") {
                updatePanel1();
            }
        },
        false
    );

    function updatePanel1() {
        var button1 = document.getElementById('<%= btnNew1.ClientID%>');
        button1.click();
    }
</script>

“Tier 1 Positions”是一个开始关闭的 jQuery 手风琴 单击面板被视为单击 btnNew1,它调用 PositionControlT1_Click:

Sub PositionControlT1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Tier1Refreshes.Text = (Int32.Parse(Tier1Refreshes.Text) + 1).ToString();
    PositionsControlT1.RefreshTheGrid()
End Sub

PositionsControlT1 是一个 ASCX;它包括一个在新选项卡中调出另一个 ASPX 的按钮,允许更改 PositionsControlT1 中显示的数据,并在单击“返回”按钮时发布“刷新”消息,然后关闭 ASPX。

这是正在发生的事情:

  1. 我点击面板;它打开,Tier1Refreshes 显示为 1.
  2. 我进行了影响 PositionsControlT1 中数据的更改,然后单击该页面的返回按钮。
  3. “刷新”消息由这个 ASPX 处理,它执行一个 PostBack,然后调用 PositionControlT1_Click,然后是另一个 PostBack。我在对 RefreshTheGrid() 的调用上设置了一个断点,以查看“更新的”Tier1Refreshes 值是什么,它是 2;然而,在第二次 PostBack 之后,显示的值仍然是 1,并且网格没有用新数据更新。
  4. 我点击面板; Tier1Refreshes 从 1 增加到 2(而不是从 2 增加到 3),然后关闭。我再次点击它; Tier1Refreshes 从 2 增加到 3,现在显示刷新的数据。

如何在不关闭面板然后手动重新打开面板的情况下让面板内的数据刷新?或者是否有一些 jQuery 手风琴“功能”不允许我这样做?

asp.net jquery-ui-accordion
© www.soinside.com 2019 - 2024. All rights reserved.