DEV TreeList 刷新技巧

终于搞定DevExpress的TreeList控件的刷新数据源后恢复刷新前节点展开状态的问题。简而言之,就是更新被修改的内容时让树看上去不动,原来展开的节点还是展开,原先闭合的节点还是闭合。

由于控件本身没有提供这种方法,所以只能手动实现了。实现的思路如下:

1、保存刷新前节点状态,试过几种方法都不理想,最后采取的办法是用一个List保存Expanded属性为True的节点的KeyID。

var ids = new List();
treList.GetNodeList().FindAll(n => n.Expanded).ForEach(n => { ids.Add(n.GetValue("ID")); });
 
  
2、刷新后还原节点状态

ids.ForEach(id => { treList.FindNodeByKeyID(id).Expanded = true; });

如果需要还原焦点节点的话,需要在刷新前获取FocusedNode的id并保存起来,刷新后将FocusedNode的值设置一下就可以了。


希望这点小小经验能够帮助到需要他的人。

你可能感兴趣的:(DEV)