FineUI 官方论坛

标题: 谁那有动态加载tree子节点的例子 [打印本页]

作者: 啃O    时间: 2012-7-5 06:09
标题: 谁那有动态加载tree子节点的例子
在项目中遇到个问题 由于树太庞大,想页面加载时先加载一级节点,当点击该节点时动态加载该节点的子节点。有做个这方面的给我实例 谢谢!!!

作者: 啃O    时间: 2012-7-6 15:17
呵呵 每次我发的帖子都没技术含量 自己搞定了
作者: huzi    时间: 2012-7-17 05:32
怎么搞定的,介绍一下啊
作者: 啃O    时间: 2012-7-17 16:05
本帖最后由 啃O 于 2012-7-17 16:07 编辑

树初始化时只加载两级目录,在节点事件里判断此节点在数据库是否存在子节点,如存在则在该节点添加子节点,但弊端就是每点一次节点,整个页面要进行全页刷新,有点不爽,启用Ajax新树节点加不上
作者: 许先生    时间: 2012-7-30 12:59
我现在用的是treepanel是动态绑定的,不知道能不能入得了法眼哈
作者: 啃O    时间: 2012-7-30 14:18
许先生 发表于 2012-7-30 12:59
我现在用的是treepanel是动态绑定的,不知道能不能入得了法眼哈

说说怎么弄的 我的一直不太完善
作者: 水冰月    时间: 2012-8-1 01:25
晒出来分享一下哈!
作者: Panda    时间: 2012-8-1 07:38
http://bbs.extasp.net/forum.php? ... &extra=page%3D1

看看这个帖子里我的那个回复。 代码回复上去后排版乱了,自己在VS里面用那个自动排版整理下。希望对你有帮助
作者: 啃O    时间: 2012-8-2 01:48
Panda 发表于 2012-8-1 07:38
http://bbs.extasp.net/forum.php?mod=viewthread&tid=1047&extra=page%3D1

看看这个帖子里我的那个回复。 ...

我的是用的tree 不是手风琴那种,不一样的
作者: yxsyjin    时间: 2012-10-10 06:52
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
           //Tree1 OnClientClick = TabStrip1.GetAddTabReference(e.Node.Text, "fa_zclb.aspx", e.Node.Text, IconHelper.GetIconUrl(Icon.Application), true));
            LoadData();
        }
    }
    private void LoadData()
    {
        
        var db = new DBClass();
        //var dt = new DataTable();
        var ds = new DataSet();
        string sql = "select lbdm,lbmc,case when len(rtrim(lbdm))=2 then NULL else left(lbdm,2) end 'ParentID' ";
        sql += "from  FA_Gdlb where gsdm='@gsdm' order by lbdm";
        sql = sql.Replace("@gsdm", RunContext.Dw.gsdm);
        ds = db.ExecQueryRecordSet(sql, "fa_gdlb"); //返回 数据集  
        
        ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["lbdm"], ds.Tables[0].Columns["ParentID"]);//

        foreach (DataRow row in ds.Tables[0].Rows)
        {
            if (row.IsNull("ParentID"))  //DBNull.Value  
            {   //上级代码为空时,表示一级节点
                TreeNode node = new TreeNode();
                node.Text = row["lbdm"].ToString() +" "+ row["lbmc"].ToString();
                node.Expanded = true;//展开节点
                //node.Leaf = false;   //是否是叶子节点
                node.NodeID = row["lbdm"].ToString();
                Tree1.Nodes.Add(node);//增加 父节点

                ResolveSubTree(row, node); //加载 子节点
            }
        }
    }

    private void ResolveSubTree(DataRow dataRow, TreeNode treeNode)
    {
        DataRow[] rows = dataRow.GetChildRows("TreeRelation");//从"关系名"行中读取"子节点"行集
        if (rows.Length > 0)          // 行集不为空
        {
            treeNode.Expanded = true;//展开节点
            foreach (DataRow row in rows)          //从 子节点 行集中读取.
            {
                TreeNode node = new TreeNode();   //创建空节点
                node.NodeID = row["lbdm"].ToString();
                node.Text = row["lbdm"].ToString() + " " + row["lbmc"].ToString();
                node.EnablePostBack = false;       //回发
                node.OnClientClick = TabStrip1.GetAddTabReference(row["lbdm"].ToString(), "fa_zclb.aspx", row["lbmc"].ToString(), IconHelper.GetIconUrl(Icon.Application), true);
                //TN.OnClientClick = TabStrip1.GetAddTabReference(dr["ID"].ToString(), dr["URL"].ToString() ,  dr["NAME"].ToString(), true);
                //node.Leaf = true;
                treeNode.Nodes.Add(node);        //添加 二级 节点

                //ResolveSubTree(row, node);    // 读取 下级 节点
            }
        }
    }
作者: 飘雪    时间: 2012-10-10 07:32
顶一个,学习了
作者: 啃O    时间: 2012-10-10 08:24
yxsyjin 发表于 2012-10-10 06:52
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)

兄弟,你的这种写法 在页面禁用了Ajax吗?
作者: 寒山寺    时间: 2012-10-11 01:52
1, if (!IsPostBack)  绑定根节点,同时判断根有无孩子
2,//展开树节点  protected void tTree_NodeExpand(object sender, TreeExpandEventArgs e)
   展开哪个节点,动态去数据库绑定哪个节点




作者: shusheng    时间: 2012-10-11 02:51
没有完整代码啊!
作者: yxsyjin    时间: 2012-10-12 08:34
我在 另外 一个贴里面,已经 回复过了,有完整 动态添加 代码




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4