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。從而保證了正常的設置焦點,之前一直以為是焦點設置的方法的問題。換了好多的焦點設置的方法。

小結

在對需要對空間進行初始化數據源的控件時,先綁定數據源再對控件進行設置。希望同樣遇到這個問題的同志們能夠看到這個文章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM