以下是代码
static DataTable Pub_dt;
    protected void Page_Load(object sender, EventArgs e)
    {
        string Query_Sql = "select id,deptname,sid from sys_department";
        Pub_dt = new DataTable();
        Sys_DepartmentSys Qusys = new Sys_DepartmentSys();
        Pub_dt = Qusys.getData();
        Frist_loaadtree(UltraWebTree1, Pub_dt);
    }
    public void Frist_loaadtree(UltraWebTree tv, DataTable tb)
    {
        DataRow[] Rows = Pub_dt.Select("id='001'");
        foreach (DataRow Row in Rows)
        {
            Node node = new Node();
            node.Text = Row["deptname"].ToString();
            node.DataKey = Row["id"].ToString();
            tv.Nodes.Add(node).ShowExpand = true;            int len = (node.DataKey.ToString()).Length + 3;
            DataRow[] dr = Pub_dt.Select("id like'" + node.DataKey + "%' and len(id)='" + len + "'");
            Sec_loadtree(node, dr);
        }
    }
    public void Sec_loadtree(Node p_id, DataRow[] drs)
    {
        for (int i = 0; i < drs.Length; i++)
        {
            Node node = new Node();
            node.Text = drs[i]["deptname"].ToString();
            node.DataKey = drs[i]["id"].ToString();
            p_id.Nodes.Add(node).ShowExpand = true;
        }
    }
    protected void UltraWebTree1_DemandLoad(object sender, WebTreeNodeEventArgs e)
    {
        int len = (e.Node.DataKey.ToString()).Length + 3;
        DataRow[] dr = Pub_dt.Select("id like'" + e.Node.DataKey+ "%' and len(id)='" + len + "'");
        if (dr.Length > 0)
        {
            Sec_loadtree(e.Node, dr);
        }
    }这是一个树型结构,基怪的是此树型结构在第一层,二层好用,当点击第二层加载第三层的时候就了错了,即
protected void UltraWebTree1_DemandLoad(object sender, WebTreeNodeEventArgs e)
    {
       int len = (e.Node.DataKey.ToString()).Length + 3;
此地方的e.Node.DataKey.ToString() 未将对象引用到实例。、开始以为是page_load方法里边的应该放在 !isPostBack 里边,可是当我修改了时候在进行也还是不对
请高手指定下到底是怎么进行加载的,郁闷了

解决方案 »

  1.   

    不知道你那个变量Query_Sql做什么用的,不过挺奇怪的,除非是除非是第一次加载的对象被释放了,不然不会再第二次加载时找不到第一次加载的对象的(我把每个node称为对象)。
      

  2.   

    我的那个Query_Sq这句没用。我忘了注释了,
     Pub_dt = new DataTable(); 
            Sys_DepartmentSys Qusys = new Sys_DepartmentSys(); 
            Pub_dt = Qusys.getData(); 
            Frist_loaadtree(UltraWebTree1, Pub_dt); 我用这四句话构建了一个DataTable Query_Sql没有用
      

  3.   

    没人回答啊,那我再试探性的问一下,你试试在UltraWebTree1_DemandLoad里单独将e.Node.Text输出看看,或者判断下e.Node是否为NULL,输出内容可以使用一个Label来显示。然后你再使用UltraWebTree1_NodeClicked尝试一下,可能是你使用的事件有问题也说不定哦。另外你再确定下UltraWebTree1.EnableViewState属性是否为true;