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>
我能做些什么来解决这个问题?
在ListBox1.Items.Add()
之后调用UpdatePanel2.Update()
或在标记中使用UpdateMode="Always"
代替"conditional"