• Dev TreeList设置焦点失败解决方法


    问题描述

    对TreeList初始化之后,设置treelist的焦点节点时,发现每次初始化控件的时不能正确的绑定焦点节点,第二次点开treelist的时候才会正常的设置目标节点为焦点节点。

    截图

    绑定TreeLlist的节点失败

    解决方案

    在重构代码的时候,无意间调整了一下代码的顺序,发现能够正确设置目标节点为焦点节点。

    private void BindData(DataTabel pDataTabel)
    {
        ...
        this.treeList_Popup.ParentFieldName = "I_PARID";
        this.treeList_Popup.KeyFieldName = "I_ID";
        this.treeList_Popup.DataSource = null;
        this.treeList_Popup.DataSource = pTreeSourceDataTable;
        ...
    }
    
    // 调用代码
    ...
    TreeListNode  pFocusNode = this.treeList_Popup.FindNodeByFieldValue("C_CODE", value);
    this.treeList_Popup.FocusedNode = pFocusNode;
    ...
    

    上述代码,在绑定数据源时,先设置了父节点字段和关键字段,再绑定的数据,这样会导致初始化TreeList失败,所以在第一次设置焦点节点的时候会失败,在第二次绑定数据源时,才会正常的绑定数据源,才能正常的显示设置的焦点节点。
    更改之后的BindData方法中的代码为

    private void BindData(DataTabel pDataTabel)
    {
        ...
    
        // 先绑定数据源再设置父节点字段和关键字段
        this.treeList_Popup.DataSource = null;
        this.treeList_Popup.DataSource = pTreeSourceDataTable;
        this.treeList_Popup.ParentFieldName = "I_PARID";
        this.treeList_Popup.KeyFieldName = "I_ID";
        ...
    }
    
    

    调换顺序之后就能在第一次初始化空间的时候能够正确的创建treeList。从而保证了正常的设置焦点,之前一直以为是焦点设置的方法的问题。换了好多的焦点设置的方法。

    小结

    在对需要对空间进行初始化数据源的控件时,先绑定数据源再对控件进行设置。希望同样遇到这个问题的同志们能够看到这个文章。

  • 相关阅读:
    Hammer.js--转载自李林峰的园子
    nodejs--模块
    gruntjs
    玩转github----1
    模块化开发--sea.js
    事件委托
    css兼容问题
    轮播图
    Spring整合Hibernate 二
    Spring整合Hibernate 一
  • 原文地址:https://www.cnblogs.com/MaFeng0213/p/6040476.html
Copyright © 2020-2023  润新知