UpdatePanel不刷新列表框

本文关键字:列表 刷新 UpdatePanel | 更新日期: 2023-09-27 18:09:33

我需要一些项目添加到ListBox每当一个新的TreeNode被选中。

我希望在没有整个页面返回的情况下发生。

为此,我有以下标记,其中ListBox被放置在UpdatePanel内(我认为)所需的Trigger s:

<tr>
    <td>
        <asp:TreeView ID="testTreeView" runat="server" Height="304px" OnSelectedNodeChanged="testTreeView_SelectedNodeChanged" Width="257px">
            <LeafNodeStyle ForeColor="Yellow" />
        </asp:TreeView>
    </td>
    <td>
        <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="testTreeView" EventName="SelectedNodeChanged" />
            </Triggers>
        </asp:UpdatePanel>
    </td>
</tr>

testTreeView_SelectedNodeChanged

protected void testTreeView_SelectedNodeChanged(object sender, EventArgs e)
{
    ListBox1.Items.Clear();
    var selectedNode = testTreeView.SelectedNode;
    var userList = AddUsersToList(selectedNode);
    foreach (var item in userList)
    {
        ListBox1.Items.Add(item["Title"].ToString());
    }
}

当我尝试在没有任何更新面板的情况下使用上面的代码时,代码只会找到,但是当选择新的TreeNode时,整个页面会返回。

添加更新面板后,我可以看到事件仍然触发,但没有项目添加到ListBox1,这使我认为UpdatePanel在选择新的TreeNode时不刷新。


我还尝试将两个控件放在相同的UpdatePanel,但具有相同的结果(事件火灾,但ListBox未更新):

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="testTreeView" EventName="SelectedNodeChanged" />
    </Triggers>
    <ContentTemplate>
        <table style="width: 100%;">
            <tr>
                <td>
                    <asp:TreeView ID="testTreeView" runat="server" Height="304px" OnSelectedNodeChanged="testTreeView_SelectedNodeChanged" Width="257px">
                        <LeafNodeStyle ForeColor="Yellow" />
                    </asp:TreeView>
                </td>
                <td>
                    <asp:ListBox ID="ListBox1" runat="server" Height="276px" Width="305px"></asp:ListBox>
                </td>
            </tr>
        </table>
    </ContentTemplate>
</asp:UpdatePanel>

我能做些什么来解决这个问题?

UpdatePanel不刷新列表框

ListBox1.Items.Add()之后调用UpdatePanel2.Update()或在标记中使用UpdateMode="Always"代替"conditional"