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有详细描述。
  • 相关阅读:
    python测试开发django186.使用 jquery 的 .val() 无法获取input框的输入值(已解决) 上海
    2022年第 10 期《python接口web自动化+测试开发》课程,2月13号开学! 上海
    python测试开发django185.bootstraptable 后端搜索功能实现(queryParams) 上海
    python测试开发django184.bootstraptable 前端分页搜索相关配置 上海
    python测试开发django181.自定义过滤器(除法取余) 上海
    python测试开发django180.dockercompose部署django+mysql环境 上海
    python测试开发django183.bootstrapformvalidation重置校验的方法 上海
    pytest文档79 内置 fixtures 之 cache 写入和读取缓存数据 上海
    python测试开发django182.jQuery重置form表单 上海
    golang interface用法
  • 原文地址:https://www.cnblogs.com/forrestsun/p/2044074.html
Copyright © 2011-2022 走看看