我有一个asp.net树视图,它使用OnSelectedNodeChanged事件并且工作正常,但是如果你再次单击同一个节点它不会触发,任何想法如何绕过这个?
树形目录:
<asp:TreeView ID="tvSOWASP" runat="server" ImageSet="Arrows"
ShowLines="True" OnTreeNodePopulate="PopulateNode" OnSelectedNodeChanged="SelectNode">
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<Nodes>
<asp:TreeNode Expanded="True" ImageUrl="~/tree2/icons/book.gif"
SelectAction="None" Text="Schemes Of Work" Value="Schemes Of Work">
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD"
HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
代码隐藏:
protected void SelectNode(Object sender, EventArgs e)
{
// Code here, ok when select any node, select same node and this code is not hit
}
答案 0 :(得分:5)
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e){
// Do whatever you're doing
TreeView1.SelectedNode.Selected = false;
}
希望它可以帮到你
答案 1 :(得分:0)
根据我的OnSelectedNodeChanged事件,任何控件都将是该控件的ID,其中包含控件名称为tvSOWASP
的事件名称,因此它的事件将是tvSOWASP_SelectedNodeChanged
而不是SelectNode
所以更改您的SelectedNodeChanged
事件与我的代码一样
protected void tvSOWASP_SelectedNodeChanged(object sender, EventArgs e)
{
// Your code...
}
所以请从代码中移除OnSelectedNodeChanged="SelectNode"
,然后点击活动,尝试按照我提到的方式制作新活动。
希望它理解并为你工作。
答案 2 :(得分:0)
当您再次单击同一节点时,它不会触发,因为第二次选择没有改变,因此selectednodechanged事件不会触发。
请参阅this link
答案 3 :(得分:0)
我发现在SelectedNodeChanged事件结束时取消选择当前节点会导致稍后在页面周期中出现问题。控件本身呈现时,没有显示选定的节点。
相反,我向Page_Load事件中添加了一些代码以清除当前选择。
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack) {
string eventTarget = Page.Request["__EVENTTARGET"];
if(eventTarget == TreeView1.ClientID.Replace('_', '$')) {
// The TreeView is posting back a selection change
// Clear out any existing selection so that selecting the same now
// will trigger the change event.
TreeView1.SelectedNode.Selected = false;
}
}
}
答案 4 :(得分:-1)
使用e.Node.Collapse();在treeView_TreeNodeExpanded
中