zoukankan      html  css  js  c++  java
  • Devexpress XtraTreeList 加载速度问题

    Snap1

    测试一:建立一个测试工程,放入一个button和一个xtratreelist控件,在button事件中加入如下代码

         private void simpleButton1_Click(object sender, EventArgs e)
            {
                
                treeList1.Nodes.Clear();
                int nodecount = 30000;
                for (int i = 0; i < nodecount; i++)
                {
                    treeList1.AppendNode(new object[] {i.ToString(),"列2","列3","列4" },null);
                } 
            }

    当点击按钮后就要开始等待(才三万条数据)。

    测试二:测试一中的这个问题比较显性,呵呵,为什么这么说呢,因为我们工程中实现时是这样的。由于工程采用向导模式(当时在向导模式里的其它代码绕了半天),

    我简化了一下代码如下(需要先将xtralist控件的visible属性设置为false,其它不变,这样可以直接看到问题):

        private void simpleButton1_Click(object sender, EventArgs e)
            {
                treeList1.Visible = false;
                treeList1.Nodes.Clear();
                int nodecount = 30000;
                for (int i = 0; i < nodecount; i++)
                {
                    treeList1.AppendNode(new object[] {i.ToString(),"列2","列3","列4" },null);
                }
                treeList1.Visible = true;
            }
    这时我们运行程序后第一次点击速度会很快,但第二次点击时去像测试一的一样速度极慢,这是为什么呢?
    通过简化的代码可以理解为在不可见的情况下加载速度快,可第二次为什么又慢了呢?没太想明白(有时间看看控件源码,查下原理)
     
    解决办法:在开始处及结尾处加入xtratreelist的begininit()及endinit()方法,对测试一、二均有效
       private void simpleButton1_Click(object sender, EventArgs e)
            {
                treeList1.BeginInit();
                treeList1.Nodes.Clear();
                int nodecount = 30000;
                for (int i = 0; i < nodecount; i++)
                {
                    treeList1.AppendNode(new object[] {i.ToString(),"列2","列3","列4" },null);
                }
                treeList1.EndInit();
            }
    希望有此类的问题的朋友能少绕围路:)
     
    通过对xtratreelist代码分析发现其实现了ISupportInitialize接口,《详细解释ISupportInitialize接口 》对ISupportInitialize有详细描述。
  • 相关阅读:
    06 is和==的区别 encode()编码 decode()解码
    05 dic的增删改查 字典的嵌套 考试题dic.get()的相关使用
    03 编码 int ,bool,str的常用操作 主要讲str
    01 基本数据类型 变量 if语句
    04 列表的增删改查 常用方法 元祖 range
    02 while循环 格式化输出 运算符
    多校2 Harmonious Army hdu6598 网络流
    P3159 [CQOI2012]交换棋子 网络流
    P2172 [国家集训队]部落战争 最大流
    P2402 奶牛隐藏 网络流
  • 原文地址:https://www.cnblogs.com/forrestsun/p/2044074.html
Copyright © 2011-2022 走看看