UpdatePanel不刷新ListBox

时间:2016-09-30 09:12:32

标签: c# asp.net sharepoint

每当选择新的ListBox时,我都需要将一些项目添加到TreeNode

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

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

<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在选择新{{1}时没有刷新}}

我也尝试将两个控件放在同一个TreeNode中,但结果相同(事件触发但UpdatePanel未更新):

ListBox

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

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