zoukankan      html  css  js  c++  java
  • XAF 如何实现两个ListView联动

    例如:有部门和员工两个ListView

    1.      首先用模型编辑器添加一个DashboardView1

    2.      然后再给DashboardView1添加两个ItemDepartment_ListView Employee_ListView;

    3.      代码

    using System;

    using DevExpress.ExpressApp;
    using DevExpress.ExpressApp.Editors;
    using System.Collections;
    using DevExpress.Data.Filtering;

    namespace EasyTestTool.Module
    {
        
    public partial class EmployeesDashboardInteractionController : ViewController<DashboardView>
        {
            
    public EmployeesDashboardInteractionController()
            {
                InitializeComponent();
                RegisterActions(components);
            }

            
    private const string TargetDashboardId = "DashboardView1";
            
    private const string EmployeeCriteriaId = "SelectedDepartmentsCriteria";


            
    private ListView employeeListView;
            
    private ListView departmentListView;

            
    protected override void OnActivated()
            {
                
    base.OnActivated();

                
    if (View.Id == TargetDashboardId)
                {
                    
    foreach (DashboardViewItem item in View.GetItems<DashboardViewItem>())
                    {
                        item.ControlCreated 
    += item_ControlCreated;
                    }
                }
            }

            
    void item_ControlCreated(object sender, EventArgs e)
            {
                DashboardViewItem item 
    = ((DashboardViewItem)sender);

                
    if (item.Frame.View.Id == "Department_ListView")
                {
                    departmentListView 
    = (ListView)item.Frame.View;
                    departmentListView.SelectionChanged 
    += departmentListView_SelectionChanged;
                }

                
    if (item.Frame.View.Id == "Employee_ListView")
                {
                    employeeListView 
    = (ListView)item.Frame.View;
                }
            }

            
    void departmentListView_SelectionChanged(object sender, EventArgs e)
            {
                ArrayList keys 
    = new ArrayList();
                
    object selectObject = null;
                
    foreach (object selectedObejct in ((ListView)sender).SelectedObjects)
                {
                    
    if (selectedObejct != null)
                        keys.Add(ObjectSpace.GetKeyValue(selectedObejct));
                }

                FilterEmployeeListView(
    new InOperator("Department", keys));
           }
            
             

            
    private void FilterEmployeeListView(CriteriaOperator criteria)
            {
                employeeListView.CollectionSource.Criteria[EmployeeCriteriaId] 
    = criteria;
            }

            
    protected override void OnDeactivated()
            {
                
    base.OnDeactivated();

                
    if (View.Id == TargetDashboardId)
                {
                    
    foreach (DashboardViewItem item in View.GetItems<DashboardViewItem>())
                    {
                        item.ControlCreated 
    -= item_ControlCreated;
                    }

                    
    if(departmentListView != null)
                    {
                        departmentListView.SelectionChanged 
    -= departmentListView_SelectionChanged;
                    }
                }


            }
        }
    }
  • 相关阅读:
    Block深入浅出
    JSPatch 遇上swift
    iPhone左下角app图标
    Handoff使用指南
    实习任务——导出excel
    实习任务——对查询结果进行筛选过滤
    Markdown基本语法
    学习笔记(二)——类加载及执行顺序
    #学习笔记(一)——static
    写给过去的3年,拥抱2016
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/2036478.html
Copyright © 2011-2022 走看看