XtraTreeList的NodeChanged事件

业务场景:
希望在节点数据中实现:当父节点的某个数据项变化时,相应的子节点的数据项也发生变化。典型的应用就是级联选中(父节点选中后,子节点也相应选中)。

在研究XtraTreeList控件中,要实现这个功能,我试过三种方式:
1、响应XtraTreeList节点中的内置编辑器的Checked事件,失败!
    原因是当Checked响应时,并没有反映到控件的数据源,因而判断是失效的,往往会发生明明是选中的,但在事件响应中判定的是没选中。
2、数据源判定,一般情况下,XtraTreeList的数据源都是DataTable,成功!缺陷就是选中后不能在界面中实时反映出来,在保存的时候才反映出来。
3、响应XtraTreeList的NodeChanged事件,成功!缺陷:只有焦点离开该节点的时候,才会触发该事件,并且,必须在ValidateNode的时候,记录须处理的业务数据,(我是记录在TreeListNode的Tag属性中)。

         private   void  treeListPower_NodeChanged( object  sender, DevExpress.XtraTreeList.NodeChangedEventArgs e)
        
{
            
if (m_currentEditStatus != EditStatus.EditBatch || e.ChangeType != NodeChangeTypeEnum.Tag)
            
{
                
return;
            }

            
if (e.Node.HasChildren)
            
{

                
foreach (TreeListNode n in e.Node.Nodes)
                
{
                    n.SetValue(
1, e.Node.Tag);
                }


            }


        }


        
private   void  treeListPower_ValidateNode( object  sender, DevExpress.XtraTreeList.ValidateNodeEventArgs e)
        
{
            
if (e.Node.HasChildren)
            
{
                e.Node.Tag 
= e.Node.GetValue(1);
            }

            e.Valid 
= true;
        }



注:几个校验事件的触发顺序
validating--数据源发生变化时触发
validated--数据源发生变化时触发

validatingEditor--编辑节点数据时触发
validateNode--编辑节点数据时触发

转载于:https://www.cnblogs.com/thomaschina/archive/2008/04/24/1169456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值