2 つの UpdatePanels を含む ASP.Net 2.0 ページがあります。最初のパネルには TreeView が含まれています。2 番目のパネルにはラベルが含まれており、ツリーでの選択によってトリガーされます。ノードを選択すると、期待どおりにラベルが更新され、TreeNode
クリックしたノードが強調表示され、以前に選択したノードが強調表示されなくなります。ただし、ノードが元のコード ビハインドで強調表示 (選択) されている場合、別のノードを選択しても強調表示は削除されません。
マークアップ
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
<ContentTemplate>
<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<SelectedNodeStyle BackColor="Pink" />
</asp:TreeView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="True">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text=" - "></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TreeView1" EventName="SelectedNodeChanged" />
</Triggers>
</asp:UpdatePanel>
コードビハインド
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeView1.Nodes.Add(new TreeNode("Test 1", "Test One"));
TreeView1.Nodes.Add(new TreeNode("Test 2", "Test Two"));
TreeView1.Nodes.Add(new TreeNode("Test 3", "Test Three"));
TreeView1.Nodes.Add(new TreeNode("Test 4", "Test Four"));
TreeView1.Nodes[0].Selected = true;
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
Label1.Text = TreeView1.SelectedValue;
}
最初は最初のノードが選択されています。別のノードを選択したときにハイライトが削除されないのはなぜですか?
また、回答が得られていない同じセットアップについて別の質問をしました。どんな助けでもいただければ幸いです。
編集設定ChildrenAsTriggers="false"
が機能することはわかっていますが、ツリーが非常に大きくなる可能性があるため、ツリーを再度レンダリングすることは避けたいと思います。