c# winform两个列表控件公用一个数据集,右边的列表里不能出现左边列表里选中的项

c#  winform两个列表控件公用一个数据集,右边的列表里不能出现左边列表里选中的项

 

技术栈:泛型+linq

左边列表绑定数据

  /// 
        /// 加载执行
        /// 
        /// 
        /// 
        private void Select_Load(object sender, EventArgs e)
        {
             RegionDataTable();

            this.DepartureComboBox.ValueMember="id";
            this.DepartureComboBox.DisplayMember="name";
            this.DepartureComboBox.DataSource=regionDataTable;
        }

初始化共享数据集

ModelConvertHelper.ConvertToModel(dt)

C# DataTable类型 转换成 List集合类型的方法

https://blog.csdn.net/cplvfx/article/details/88927448

 List regionDataTable=null;
        /// 
        /// 获取航线列表
        /// 
        private void RegionDataTable()
        { 
            string sql = "select id, name from Region";
            DataTable dt=DBHelper.GetDataTable(sql);

            //调用DataTable类型 转换成 List集合类型 帮助类
            regionDataTable= ModelConvertHelper.ConvertToModel(dt);
         }

左边选中有给右边列表赋值

 /// 
        /// 选择出发地,触发该方法
        /// 
        /// 
        /// 
        private void DepartureComboBox_SelectionChangeCommitted(object sender, EventArgs e)
        { 
            //获取当前选中的 “出发地”
             RegionModel departure_value = this.DepartureComboBox.SelectedItem as RegionModel;
          
            //声明一个泛型集合
             List destination_value = new List();
            //查询在内存中地区的信息,并且地区信息不包含刚才选中的信息
             var list=from r in regionDataTable where r.id!=departure_value.id select r; 
            //把查询出来的结果返回给泛型集合
             destination_value=list.ToList();

            //给“目的地”控件绑定数据
            this.DestinationComboBox.ValueMember = "id";//value隐藏值
            this.DestinationComboBox.DisplayMember = "name";//Display显示
            this.DestinationComboBox.DataSource = destination_value;

            
        }

 

 

 

 

 

你可能感兴趣的:(c#,WinForm)