我在 WEB 项目中做一个树形菜单主要思想:(不采用递归方法)
首先在Page_Load函数中调用所有根节点,然后点击某一个根节点调用SelectedIndexChange事件加载它的所有子节点,再然后点击子节点的子节点还调用SelectedIndexChange事件加载它的子节点,如此循环下去步骤如下:
1、在tree.aspx.cs文件Page_Load函数中调用第一层根节点
2、使用TreeView控件的SelectedIndexChange事件给根节点添加子节点
以上都是成功的
3、如果子节点还有子节点,再调用SelectedIndexChange事件时就出错了  出错提示如下:输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。堆栈跟踪: 
[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
   System.Int32.Parse(String s) +38
   test.tree.Tv1_SelectedIndexChange_1(Object sender, TreeViewSelectEventArgs e) in d:\德力科怡erp软件b_s版本\test\tree.aspx.cs:62
   Microsoft.Web.UI.WebControls.TreeView.OnSelectedIndexChange(TreeViewSelectEventArgs e)
   Microsoft.Web.UI.WebControls.TreeView.RaisePostDataChangedEvent()
   Microsoft.Web.UI.WebControls.BasePostBackControl.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent()
   System.Web.UI.Page.RaiseChangedEvents()
   System.Web.UI.Page.ProcessRequestMain() 问题:
用GetNodeFromIndex(TreeView.SelectedNodeIndex)可以取到TreeView控件的根节点,但不能取到他的子节点  为什么? 很头痛  高手帮忙解决啊!!!

解决方案 »

  1.   

    GetNodeFromIndex已经解决,
    TreeView.Nodes[n]可以取到树节点的ID值,但是知识根节点的ID值,因为中括号中的n必须是整数,而用SelectedIndexChange可以取到子节点的索引号,不过它是小数,例如1.1表示第二个节点下的第一个节点,当通过TreeView.Nodes[n]取子节点的ID值的时候,就会出现“输入字符串的格式不正确”的错误提示。正确做法如下:先通过Tv1.GetNodeFromIndex(n)取到子节点对象,这里的n是字符串类型的,所以子节点索引号是小数也不会出错,然后Tv1.GetNodeFromIndex(n).ID得到节点的ID,有了节点的ID号,事情就好办多了。