none
如何在treeview的子节点加载的时候显示正在加载的图片,加载完成后又返回到原来状态? RRS feed

  • 问题

  • 方法:

            /// <summary>
    
            /// 按需填充TreeView
    
            /// </summary>
    
            /// <param name="dt">数据表</param>
    
            /// <param name="p_Node">父节点</param>
    
            /// <param name="id">数据库 id 字段名</param>
    
            /// <param name="pid">数据库 父id 字段名</param>
    
            /// <param name="text">数据库 文本 字段值</param>
    
            private void Bind_Tv(DataTable dt, TreeNode p_Node, string id, string pid, string text)
    
            {
    
                DataView dv = new DataView(dt);
    
                TreeNode tn;
    
                foreach (DataRowView drv in dv)
    
                {
    
                    if (null == p_Node)
    
                    {
    
                        tn = new TreeNode();
    
                        //tn.ImageUrl = "~/pic/TreeNode_Loading.gif";
    
                        tn.Value = drv[id].ToString();
    
                        tn.Text = drv[text].ToString();
    
                        tn.PopulateOnDemand = true;
    
                        TreeView1.Nodes.Add(tn);
    
                    }
    
                    else
    
                    {
    
                        tn = new TreeNode();
    
                        //tn.ImageUrl = "~/pic/TreeNode_Loading.gif";
    
                        tn.Value = drv[id].ToString();
    
                        tn.Text = drv[text].ToString();
    
                        tn.PopulateOnDemand = true;
    
                        p_Node.ChildNodes.Add(tn);
    
                    }
    
                }
    
            }
    
    
    Page_Load:
     if (!IsPostBack)
                {
                    Bind_Tv(exe_Table(连接字符串, "select * from 表 where 父id is null"),(TreeNode)null, "数据库id名", "数据库父id名", "数据库节点名");
                }
    TreeNodePopulate
            protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    
            {
    
                string str_Cmd = "select * from 表 where 父id='" + e.Node.Value + "'";
    
                Bind_Tv(exe_Table(str_Conn, str_Cmd), (TreeNode)e.Node, "数据库id名", "数据库父id名", "数据库节点名");        }
    
    
     这是一个按需填充的TreeView,点击某个父节点,必然会引发TreeNodePopulate,此时我想让节点左边出现一个正在加载的图像,比如是"~/pic/TreeNode_Loading.gif",等childnodes加载完成后此图像再消失,我在以前微软msdn上看到过类似效果,不知道是如何实现的。请教各位高人
    2010年4月6日 13:49

答案

  • 有没有相应的例子,我记得在baidu上搜到过一次,还有演示截图,但是忘了,这次再搜怎么也没搜到。各位能不能帮下忙。

    你可以参考下这个blog:

    http://blog.csdn.net/alphayycn/archive/2007/09/23/1797586.aspx

     

    希望对你有所帮助。

    • 已标记为答案 杜宏宇 2010年4月10日 3:22
    2010年4月9日 1:48

全部回复

  • 你好,

    你可以试试UpdatePanel+UpdateProgress的方式。

    更新的时候显示一个遮罩层表示正在更新。

     


    Microsoft Online Community Support
    2010年4月8日 3:36
  • treeview控件的展开或者收起是js吧。 不会执行服务器端方法的。
    2010年4月8日 4:28
  • 以前msdn上左侧导航栏的效果,如果在msdn上搜索什么东西,左侧的treeview就会自动定位到那个错误的节点,定位过程中有个小圆圈在节点右侧(小加号上)来回旋转的那个效果。
    2010年4月8日 5:06
  • 以前msdn上左侧导航栏的效果,如果在msdn上搜索什么东西,左侧的treeview就会自动定位到那个错误的节点,定位过程中有个小圆圈在节点右侧(小加号上)来回旋转的那个效果。
    实在不行,自己写个树就是了。简单点就是div的显示与隐藏。这样自己想加点东西也好加。
    2010年4月8日 10:04
  • 有没有相应的例子,我记得在baidu上搜到过一次,还有演示截图,但是忘了,这次再搜怎么也没搜到。各位能不能帮下忙。

    2010年4月8日 11:30
  • 有没有相应的例子,我记得在baidu上搜到过一次,还有演示截图,但是忘了,这次再搜怎么也没搜到。各位能不能帮下忙。

    你可以参考下这个blog:

    http://blog.csdn.net/alphayycn/archive/2007/09/23/1797586.aspx

     

    希望对你有所帮助。

    • 已标记为答案 杜宏宇 2010年4月10日 3:22
    2010年4月9日 1:48