我有一个asp.net treeView。 在扩展的节点上,我正在为扩展节点绑定子节点。 但是如果我检查节点而不是展开节点,那么节点及其所有子节点就会改变位置并变成主节点的子节点。当再次点击+时,它就是正确的位置。 关于如何解决它的任何想法!!!
这是updatePanel中的树
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TreeView ID="MyTreeView" runat="server" ImageSet="XPFileExplorer" NodeIndent="15"
OnTreeNodeExpanded="MyTreeView_TreeNodeExpanded">
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"
NodeSpacing="0px" VerticalPadding="2px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
VerticalPadding="0px" />
</asp:TreeView>
</ContentTemplate>
</asp:UpdatePanel>
从后面的代码: 在页面加载我有:
if (!this.IsPostBack)
{
this.MyTreeView.ShowCheckBoxes = TreeNodeTypes.All;
this.MyTreeView.ShowLines = true;
FillTree();//custom method just to fill the tree
}
和
protected void MyTreeView_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
TreeNode expandedNode = e.Node;
if (expandedNode.Value != "-1" && expandedNode.Value == "-2")
{
//Some logic
}
}
提前致谢
答案 0 :(得分:0)
这个JavaScript函数修复了树:
function FixTreeview(treeView) {
try {
if (treeView) {
var treeLinks = treeView.getElementsByTagName("a");
var nodeCount = treeLinks.length;
for (i = 0; i < nodeCount; i++) {
if (treeLinks[i].firstChild.tagName) {
if (treeLinks[i].firstChild.tagName.toLowerCase() == "img") {
var currentToggleLink = treeLinks[i];
var childContainer = GetParentByTagName("table", currentToggleLink).nextSibling;
try {
eval(currentToggleLink.href);
} catch (e) {
}
}
}
}
}
} catch (e) {
}
}