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。从而保证了正常的设置焦点,之前一直以为是焦点设置的方法的问题。换了好多的焦点设置的方法。

小结

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

原文地址:https://www.cnblogs.com/MaFeng0213/p/6040476.html